04.02.2016, 12:01 
	
	
	
		Здравствуйте. У меня вот большая проблема - сервер падает, проработав, буквально только час.
Использующиеся плагины: gvar.so mysql.so sscanf.so ColAndreas_static.so streamer.so YSF.so
Тестил на рухостере, через час показывало нагрузку в 100%.
Таймер:
Всё, сервер падает даже когда нет игроков. Есть только этот таймер, по логам нет ничего такого, что могло бы создаться и т.д. Однако ЦП прыгнуло до 100. С чем может быть связано? Как лечить? Как измерить?
	
	
	
	
Использующиеся плагины: gvar.so mysql.so sscanf.so ColAndreas_static.so streamer.so YSF.so
Тестил на рухостере, через час показывало нагрузку в 100%.
Таймер:
Код:
SetTimer("SecondTimer",1000,1);
Код:
[15:37:30] Загружено 1 коробок
[15:37:30] Загружено 0 костров
[15:37:30] Загружено 0 костров
[15:37:30] Загружено 846 видов крафта
[15:37:30] Загружено 2000 видов пикапов
[15:37:30] LoadGraffitiSystem[ Загрузка ... ] Потрачено: 2ms
[15:37:30] Загружено 30 общин
[15:37:30] {Last:1} Время: 15:37:30. Сервер работает! Streamer_GetTickRate: 50 | Streamer_CountItems: 26522 | Streamer_ProcessActiveItems: 1| Streamer_GetUpperBound: 26523
[15:37:30] {Last:2} Время: 15:37:30. Сервер работает! Streamer_GetTickRate: 50 | Streamer_CountItems: 26522 | Streamer_ProcessActiveItems: 1| Streamer_GetUpperBound: 26523
[15:37:31] {Last:1} Время: 15:37:31. Сервер работает! Streamer_GetTickRate: 50 | Streamer_CountItems: 26522 | Streamer_ProcessActiveItems: 1| Streamer_GetUpperBound: 26523
[15:37:31] {Last:2} Время: 15:37:31. Сервер работает! Streamer_GetTickRate: 50 | Streamer_CountItems: 26522 | Streamer_ProcessActiveItems: 1| Streamer_GetUpperBound: 26523
[15:37:32] {Last:1} Время: 15:37:32. Сервер работает! Streamer_GetTickRate: 50 | Streamer_CountItems: 26522 | Streamer_ProcessActiveItems: 1| Streamer_GetUpperBound: 26523
[15:37:32] {Last:2} Время: 15:37:32. Сервер работает! Streamer_GetTickRate: 50 | Streamer_CountItems: 26522 | Streamer_ProcessActiveItems: 1| Streamer_GetUpperBound: 26523
...
[15:46:37] {Last:1} Время: 15:46:37. Сервер работает! Streamer_GetTickRate: 50 | Streamer_CountItems: 26536 | Streamer_ProcessActiveItems: 1| Streamer_GetUpperBound: 26541
[15:46:37] {Last:2} Время: 15:46:37. Сервер работает! Streamer_GetTickRate: 50 | Streamer_CountItems: 26536 | Streamer_ProcessActiveItems: 1| Streamer_GetUpperBound: 26541
[15:46:38] {Last:1} Время: 15:46:38. Сервер работает! Streamer_GetTickRate: 50 | Streamer_CountItems: 26536 | Streamer_ProcessActiveItems: 1| Streamer_GetUpperBound: 26541
[15:46:38] {Last:2} Время: 15:46:38. Сервер работает! Streamer_GetTickRate: 50 | Streamer_CountItems: 26536 | Streamer_ProcessActiveItems: 1| Streamer_GetUpperBound: 26541
[15:46:39] {Last:1} Время: 15:46:39. Сервер работает! Streamer_GetTickRate: 50 | Streamer_CountItems: 26536 | Streamer_ProcessActiveItems: 1| Streamer_GetUpperBound: 26541
[15:46:39] {Last:2} Время: 15:46:39. Сервер работает! Streamer_GetTickRate: 50 | Streamer_CountItems: 26536 | Streamer_ProcessActiveItems: 1| Streamer_GetUpperBound: 26541
[15:46:40] {Last:1} Время: 15:46:40. Сервер работает! Streamer_GetTickRate: 50 | Streamer_CountItems: 26536 | Streamer_ProcessActiveItems: 1| Streamer_GetUpperBound: 26541
[15:46:40] {Last:2} Время: 15:46:40. Сервер работает! Streamer_GetTickRate: 50 | Streamer_CountItems: 26536 | Streamer_ProcessActiveItems: 1| Streamer_GetUpperBound: 26541
Код:
publics:SecondTimer()
{
	new hour,minute,second;
	gettime(hour,minute,second);
	printf("{Last:1} Время: %02d:%02d:%02d. Сервер работает! Streamer_GetTickRate: %d | Streamer_CountItems: %d | Streamer_ProcessActiveItems: %d| Streamer_GetUpperBound: %d", hour, minute, second, Streamer_GetTickRate(), Streamer_CountItems(STREAMER_TYPE_OBJECT), Streamer_ProcessActiveItems(), Streamer_GetUpperBound(STREAMER_TYPE_OBJECT));
	new GetTime = gettime()/*,vremya = GetTickCount()*/;
	if(ServerTimer <= GetTime && ServerTimer != 0)
	{
	    ServerTimer = GetTime+20;
	    WorldMinute++;
	    if(WorldMinute >= 60) LastWorldTime = WorldTime, WorldTime++, WorldMinute = 0;
	    if(WorldTime > 23) WorldTime = 0;
	    SetWorldTime(WorldTime);
	    if(Iter_Count(Player) > 0) PayDay();
	}
	if(Iter_Count(Blood) > 0)
	{
		foreach(Blood, b)
		{
		    if(BloodInfo[b][blTimer] > 0)
		    {
		        BloodInfo[b][blTimer]--;
				if(BloodInfo[b][blTimer] == 0)
				{
					DestroyDynamicObjectEx(BloodInfo[b][blObject],0);
					Iter_SafeRemove(Blood, b, b);
		        }
		    }
		}
	}
	if(Iter_Count(mine_Index) > 0)
	{
		foreach(mine_Index, i)
		{
		    if(Mine_Data[i][m_active]) continue;
		    new bool:active = true;
			foreach(Player, p)
	  		{
				if(Mine_Data[i][m_world] != GetPlayerVirtualWorld(p)) continue;
			    if(Mine_Data[i][m_interior] != GetPlayerInterior(p)) continue;
			    if(IsPlayerInRangeOfPoint(p, 5, Mine_Data[i][m_posX], Mine_Data[i][m_posY], Mine_Data[i][m_posZ]))
			    {
			    	active = false;
			        break;
			    }
			}
			Mine_Data[i][m_active] = active;
		}
	}
	for(new zoneid = 0; zoneid < MAX_WEATHER_ZONE; zoneid++)
	{
	    if(!WeatherZones[zoneid][ValidWeatherZone]) continue;
		WeatherZoneUpdater(zoneid);
	}
	timesdr++;
	if(timesdr == 300)
	{
	    timesdr = 0;
	    if(random(100) < 30)
		{
			new list[MAX_WEATHER_TYPES], idx = 0;
			for(new i = 0; i < MAX_WEATHER_TYPES; i++)
			{
				if(frandom(1.0) < WeatherData[i][weather_chance]) list[idx] = i, idx++;
			}
			if(idx > 0)
			{
				new whiterand = random(idx);
				if(whiterand >= 0 && whiterand < MAX_WEATHER_TYPES)
				{
					OnWeatherChange(gWeatherID, list[whiterand]);
					gWeatherID = list[whiterand];
					printf("Серверная погода %s - %d", WeatherData[gWeatherID][weather_name], gWeatherID);
				}
			}
		}
	}
	foreach(Vehicle,i)
	{
	    new modelcarol = GetVehicleModel(i);
	    if(modelcarol >= 400)
	    {
			if(!IsABMX(i) && VehicleInfo[i][vEngine] == true && !IsAPlane(i))
			{
			    if(VehicleInfo[i][vFuel] >= VehicleOption[modelcarol-400][vehRashod])
				{
					VehicleInfo[i][vFuel] -= VehicleOption[modelcarol-400][vehRashod];//-= 0.007
					if(VehicleInfo[i][vFuel] <= 0) VehicleInfo[i][vFuel] = 0.0, GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective),SetVehicleParamsEx(i,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective),VehicleInfo[i][vEngine] = false;
				}
				else VehicleInfo[i][vFuel] = 0.0, GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective),SetVehicleParamsEx(i,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective),VehicleInfo[i][vEngine] = false;
			}
		}
	}
	if((minute == 30 || minute == 0) && second == 0)
	{
	    for(new f = 0;f < 5;f++)
		{
		    new Float:b_x = frandom(3000.0);
		    if(random(2) == 0) b_x = -b_x;
		    new Float:b_y = frandom(3000.0);
		    if(random(2) == 0) b_y = -b_y;
		    new Float: b_z;
		    CA_FindZ_For2DCoord(b_x, b_y, b_z);
		    FogPos[f][0] = b_x;
		    FogPos[f][1] = b_y;
		    FogPos[f][2] = b_z;
	        printf("Аномалия Fog №%d | X: %f, Y: %f, Z = %f", f, b_x, b_y, b_z);
		    b_z -= 2.5;
	        for(new i = 0;i < 20;i++)
			{
			    SetDynamicObjectPos(AnomalyUranFog[f*80+i], b_x+floatsin(18*i, degrees)*4, b_y+floatcos(18*i, degrees)*4, b_z+random(3));
				SetDynamicObjectRot(AnomalyUranFog[f*80+i], 0.0, 0.0, -18*i);
				SetDynamicObjectPos(AnomalyUranFog[f*80+i+1], b_x+floatsin(18*i, degrees)*3, b_y+floatcos(18*i, degrees)*3, b_z+random(3));
				SetDynamicObjectRot(AnomalyUranFog[f*80+i+1], 0.0, 0.0, -18*i);
				SetDynamicObjectPos(AnomalyUranFog[f*80+i+2], b_x+floatsin(18*i, degrees)*2, b_y+floatcos(18*i, degrees)*2, b_z+random(3));
				SetDynamicObjectRot(AnomalyUranFog[f*80+i+2], 0.0, 0.0, -18*i);
				SetDynamicObjectPos(AnomalyUranFog[f*80+i+3], b_x+floatsin(18*i, degrees), b_y+floatcos(18*i, degrees), b_z+random(3));
				SetDynamicObjectRot(AnomalyUranFog[f*80+i+3], 0.0, 0.0, -18*i);
		}
		}
	}
	printf("{Last:2} Время: %02d:%02d:%02d. Сервер работает! Streamer_GetTickRate: %d | Streamer_CountItems: %d | Streamer_ProcessActiveItems: %d| Streamer_GetUpperBound: %d", hour, minute, second, Streamer_GetTickRate(), Streamer_CountItems(STREAMER_TYPE_OBJECT), Streamer_ProcessActiveItems(), Streamer_GetUpperBound(STREAMER_TYPE_OBJECT));
	return 1;
}


