Skocz do zawartości

Rekomendowane odpowiedzi

Siemka,

 

Od dłuższego czasu męczę się z problemem długiego wczytywania pluginów (najczęściej opartych na mysql), po zmianie mapy najczęściej pluginy takie jak:

wczytują się nawet kilka minut.

Co jest dziwne, np gloves działa od razu i problem występuje tylko z tymi wyżej, nie pomaga zmiana bazy danych na inny hosting i na różne vps'y - zawsze jest tak samo i nie ważne gdzie znajduje się baza.

 

Ktoś miał taki problem lub ma jakieś podejrzenie co może go powodować?

 

Włączyłem kilka razy profilowanie i jedyne co rzuca się w oczy to czas ładowania configów weapons

image.thumb.png.b9c849d4e7a1e09e9c85a548802f4c47.png nie wiem czy to normalne, ale za każdym razem tyle to trwa.

 

Hosting to liveserver

Sygnatura użytkownika

banner46860_blue.png.e5988a6e61370617decc4f3b9fdd1d44.png

 

status.php?address=54.38.142.181:30055&g

 

status.php?address=54.38.142.181:30085&g

 

status.php?address=voice.ts3.style:9987&

Odnośnik do odpowiedzi
Udostępnij na innych stronach

Na hlmodzie nie widzę kodu źródłowego, ale dwa pierwsze pluginy bazują wejście do bazy na plikach konfiguracyjnych, więc zaczyna się ono później, niż typowe połączenie z bazą danych na starcie pluginu.

Możliwe, że jest to kwestia optymalizacji, ale musiałbyś przeglądać cały kod i się zastanowić, czy warto coś zmieniać.

Odnośnik do odpowiedzi
Udostępnij na innych stronach
3 godziny temu, Merxy napisał:

Na hlmodzie nie widzę kodu źródłowego, ale dwa pierwsze pluginy bazują wejście do bazy na plikach konfiguracyjnych, więc zaczyna się ono później, niż typowe połączenie z bazą danych na starcie pluginu.

Możliwe, że jest to kwestia optymalizacji, ale musiałbyś przeglądać cały kod i się zastanowić, czy warto coś zmieniać.

Czasami wczytanie wszystkiego zajmuje nawet 5 minut a to już kilka rund... A skoro u innych działa normalnie to dlaczego w tym przypadku nie 🤔 testowałem również na bazie od luveserver i było tak samo.

Problem występuje przy większej ilości graczy, gdy jestem sam to wszystko działa a gdy jest np. 13 osób to właśnie wczytuję tak długo 

 

// Wyłączenie weapons też nie pomaga

Edytowane przez daffyy

Sygnatura użytkownika

banner46860_blue.png.e5988a6e61370617decc4f3b9fdd1d44.png

 

status.php?address=54.38.142.181:30055&g

 

status.php?address=54.38.142.181:30085&g

 

status.php?address=voice.ts3.style:9987&

Odnośnik do odpowiedzi
Udostępnij na innych stronach
5 minut temu, Merxy napisał:

Jeżeli wczytywanie trwa dłużej przy większej liczbie graczy, to po prostu wrzuć sobie logi w .sp pomiędzy kolejnymi stopniami i timerem. Będziesz wiedział, które linią zabierają tyle czasu w sposób łopatologiczny. 

Miałem już tak zrobione w weapons, czasami "wczytuje skiny gracza" wyskakiwało od razu po zmianie mapy a czasami dopiero po ~2 minutach i nie do konca wiadomo w czym problem 😄

 

void GetPlayerData(int client)
{
	char steamid[32];
	if(GetClientAuthId(client, AuthId_Steam2, steamid, sizeof(steamid), true))
	{
		char query[255];
		FormatEx(query, sizeof(query), "SELECT * FROM %sweapons WHERE steamid = '%s'", g_TablePrefix, steamid);
		db.Query(T_GetPlayerDataCallback, query, GetClientUserId(client));
	}
}

public void T_GetPlayerDataCallback(Database database, DBResultSet results, const char[] error, int userid)
{
	int clientIndex = GetClientOfUserId(userid);
	if(IsValidClient(clientIndex))
	{
		if (results == null)
		{
			LogError("Query failed! %s", error);
		}
		else if (results.RowCount == 0)
		{
			char steamid[32];
			if(GetClientAuthId(clientIndex, AuthId_Steam2, steamid, sizeof(steamid), true))
			{
				char query[255];
				FormatEx(query, sizeof(query), "INSERT INTO %sweapons (steamid) VALUES ('%s')", g_TablePrefix, steamid);
				DataPack pack = new DataPack();
				pack.WriteString(steamid);
				pack.WriteString(query);
				db.Query(T_InsertCallback, query, pack);
			}
		}
		else
		{
			if(results.FetchRow())
			{
				for(int i = 2, j = 0; j < sizeof(g_WeaponClasses); i += 6, j++) 
				{
					g_iSkins[clientIndex][j] = results.FetchInt(i);
					g_fFloatValue[clientIndex][j] = results.FetchFloat(i + 1);
					g_iStatTrak[clientIndex][j] = results.FetchInt(i + 2);
					g_iStatTrakCount[clientIndex][j] = results.FetchInt(i + 3);
					results.FetchString(i + 4, g_NameTag[clientIndex][j], 128);
					g_iWeaponSeed[clientIndex][j] = results.FetchInt(i + 5);
				}
				g_iKnife[clientIndex] = results.FetchInt(1);
			}
			char steamid[32];
			if(GetClientAuthId(clientIndex, AuthId_Steam2, steamid, sizeof(steamid), true))
			{
				char query[255];
				FormatEx(query, sizeof(query), "REPLACE INTO %sweapons_timestamps (steamid, last_seen) VALUES ('%s', %d)", g_TablePrefix, steamid, GetTime());
				DataPack pack = new DataPack();
				pack.WriteString(query);
				db.Query(T_TimestampCallback, query, pack);
			}
		}
	}
}

Tak jak pisalem, zmienialem bazy na rozne hostingi i vpsy i zawsze ta sama sytuacja, wiec zapytanie do bazy odpada i coś innego musi to powodowac

Sygnatura użytkownika

banner46860_blue.png.e5988a6e61370617decc4f3b9fdd1d44.png

 

status.php?address=54.38.142.181:30055&g

 

status.php?address=54.38.142.181:30085&g

 

status.php?address=voice.ts3.style:9987&

Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ostatnio przeglądający ten temat (5 użytkowników)

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...