Всем привет! Впервые встречаюсь с тем, что сервер стал лагать.
Например просто даже нажать ALT на пикапе, срабатывает диалог только через 3-5 секунд, так везде.
Если что делаю на локалке.
Что проверить нужно? Какие есть варианты причин?
[ Server ]
Лаги сервера
#3
Отправлено 31 октября 2025 - 22:19
Тестишь локально сервер и бд? mysql_query используется?
Сообщение отредактировал M I S T E V: 31 октября 2025 - 22:19
#4
Отправлено 31 октября 2025 - 23:51
Babuin (31 октября 2025 - 21:20) писал:
Нажмите сюда, чтобы прочитать это сообщение. [Показать]
Ну давай так, что у тебя по объему кода?
Что у тебя в OnPlayerUpdate? Почему я за OnPlayerUpdate спрашиваю, потому что он автоматически вызывается каждые 10-30 миллисекунд и если там много кода, соответственно будет сильная нагрузка на сервер. Пересмотри ещё раз этот коллбэк, а лучше скинь его сюда и посмотрим что там у тебя.
Посмотри ещё на таймеры, у тебя таймеры с обновлением бд есть, если есть то какая частота работы и как много у тебя таймеров?
#5
Отправлено 01 ноября 2025 - 00:08
M I S T E V (31 октября 2025 - 22:19) писал:
Тестишь локально сервер и бд? mysql_query используется?
Всё локалка, mysql_query тоже используется
dekmveka (31 октября 2025 - 23:51) писал:
Нажмите сюда, чтобы прочитать это сообщение. [Показать]
Вот плеер апдейт
public OnPlayerUpdate(playerid)
{
if(GetPlayerMoney(playerid) != player_info[playerid][pMoney]) {
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, player_info[playerid][pMoney]);
}
static const fmt_query_1[] = "UPDATE `users` SET `money` = '%d' WHERE `id` = '%d'";
new query_1[sizeof(fmt_query_1)+(-2+11)+(-2+8)];
format(query_1, sizeof(query_1), fmt_query_1, player_info[playerid][pMoney], player_info[playerid][pID]);
mysql_query(dbHandle, query_1);
return 1;
}
Таймеры на авторизации стоит и всё просто типа чтобы время и всё
#6
Отправлено 01 ноября 2025 - 00:37
Babuin (01 ноября 2025 - 00:08) писал:
Нажмите сюда, чтобы прочитать это сообщение. [Показать]
Запрос в базу данных убери к чертям собачим отсюда.
Используй по назначению запросы, надо деньги сохранить, там где надо там и используй, а не крути без остановки всю рабочую сессию.
Если бы у тебя ещё больше такого было бы в OnPlayerUpdate и было больше 50 игроков, я уверен на 100% у тебя легла б база данных и сервер.
if(GetPlayerMoney(playerid) != player_info[playerid][pMoney]) {
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, player_info[playerid][pMoney]);
}
Также не советую играться с таймерами + запросами, много не ставь таймеров с запросами, опять же повторюсь, запросы нужно использовать по назначению, а не прокручивать всё время.
Ведь у тебя каждые 10-30 мс этот запрос идёт в бд, а если были бы игроки, то от каждого игрока шли запросы в бд, соответственно это будет перегрузка сервера и бд.
#7
Отправлено 01 ноября 2025 - 00:50
Удали свои наработки и просто используй это: https://pawn.wiki/in...engami-igrokov/
#8
Отправлено 01 ноября 2025 - 12:14
Babuin (01 ноября 2025 - 00:08) писал:
Нажмите сюда, чтобы прочитать это сообщение. [Показать]
Я вот спрашивал у тебя в ЛС, научился ли ты чему-то в Pawn.
Твой ответ: Да-да, я уже умею писать в Pawn..
А я смотрю на этот код и думаю: А чему научился то?
Запрос в базу данных в момент обновления данных о игроке, а ещё и не асинхронный запрос...
Опять же какой-то статик, он тут вовсе не нужен, и в какой-то момент я тебе сказал про статик, ты ко мне просто тупо не прислушался..
Ладно ты хоть свои услуги пока-что не предлагаешь..
P.S. Да я понимаю, у всех есть ошибки, но не мало ли времени прошло, чтобы изучить Pawn от и до?
Сообщение отредактировал swlm: 01 ноября 2025 - 12:32
#9
Отправлено 01 ноября 2025 - 19:02
swlm (01 ноября 2025 - 12:14) писал:
Нажмите сюда, чтобы прочитать это сообщение. [Показать]
Та в принципе статик не обидит, он у леона смотрел. Ну я в принципе тоже через статик часто делаю)
Но здесь самое херовое, что он пихает это в OnPlayerUpdate, что создает супер нагрузку на БД и сервер.
Запрос в MySQL надо делать тогда когда он нужен, а не тогда когда игрок афк а у него три миллиона запросов идет в бд и при такой скорости работы коллбэка естественно будут жесткие лаги.
Так это он ещё на локалке сидит и он один на сервере, страшно даже думать если там будет >10-15 игроков
Я думаю БД сто пудов полетит
Вход
Регистрация
Помощь











