Форум Pawn.Wiki - Воплоти мечту в реальность!: Лаги сервера - Форум Pawn.Wiki - Воплоти мечту в реальность!

Перейти к содержимому

  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Server ]
Лаги сервера

#1
Пользователь офлайн   Babuin 

  • Местный
  • Вставить ник
  • Раскрыть информацию
Всем привет! Впервые встречаюсь с тем, что сервер стал лагать.
Например просто даже нажать ALT на пикапе, срабатывает диалог только через 3-5 секунд, так везде.
Если что делаю на локалке.
Что проверить нужно? Какие есть варианты причин?
0

#2
Пользователь офлайн   swlm 

  • Профессионал
  • Вставить ник
  • Раскрыть информацию
Какой проц и частота на ядро?
А вообще бы код увидеть
0

#3
Пользователь онлайн   M I S T E V 

  • Вставить ник
  • Раскрыть информацию
Тестишь локально сервер и бд? mysql_query используется?

Сообщение отредактировал M I S T E V: 31 октября 2025 - 22:19

0

#4
Пользователь офлайн   dekmveka 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияBabuin (31 октября 2025 - 21:20) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Ну давай так, что у тебя по объему кода?
Что у тебя в OnPlayerUpdate? Почему я за OnPlayerUpdate спрашиваю, потому что он автоматически вызывается каждые 10-30 миллисекунд и если там много кода, соответственно будет сильная нагрузка на сервер. Пересмотри ещё раз этот коллбэк, а лучше скинь его сюда и посмотрим что там у тебя.
Посмотри ещё на таймеры, у тебя таймеры с обновлением бд есть, если есть то какая частота работы и как много у тебя таймеров?
0

#5
Пользователь офлайн   Babuin 

  • Местный
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщения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;
}


Таймеры на авторизации стоит и всё просто типа чтобы время и всё
0

#6
Пользователь офлайн   dekmveka 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщения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 мс этот запрос идёт в бд, а если были бы игроки, то от каждого игрока шли запросы в бд, соответственно это будет перегрузка сервера и бд.
2

#7
Пользователь онлайн   M I S T E V 

  • Вставить ник
  • Раскрыть информацию
Удали свои наработки и просто используй это: https://pawn.wiki/in...engami-igrokov/
1

#8
Пользователь офлайн   swlm 

  • Профессионал
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияBabuin (01 ноября 2025 - 00:08) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Я вот спрашивал у тебя в ЛС, научился ли ты чему-то в Pawn.
Твой ответ: Да-да, я уже умею писать в Pawn..
А я смотрю на этот код и думаю: А чему научился то?

Запрос в базу данных в момент обновления данных о игроке, а ещё и не асинхронный запрос...
Опять же какой-то статик, он тут вовсе не нужен, и в какой-то момент я тебе сказал про статик, ты ко мне просто тупо не прислушался..

Ладно ты хоть свои услуги пока-что не предлагаешь..
P.S. Да я понимаю, у всех есть ошибки, но не мало ли времени прошло, чтобы изучить Pawn от и до?

Сообщение отредактировал swlm: 01 ноября 2025 - 12:32

2

#9
Пользователь офлайн   dekmveka 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияswlm (01 ноября 2025 - 12:14) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Та в принципе статик не обидит, он у леона смотрел. Ну я в принципе тоже через статик часто делаю)
Но здесь самое херовое, что он пихает это в OnPlayerUpdate, что создает супер нагрузку на БД и сервер.
Запрос в MySQL надо делать тогда когда он нужен, а не тогда когда игрок афк а у него три миллиона запросов идет в бд и при такой скорости работы коллбэка естественно будут жесткие лаги.
Так это он ещё на локалке сидит и он один на сервере, страшно даже думать если там будет >10-15 игроков
Я думаю БД сто пудов полетит
1

#10
Пользователь офлайн   Babuin 

  • Местный
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияdekmveka (01 ноября 2025 - 00:37) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Помогло, просто хотел чтобы деньги постоянно сохранялись.
А так помогло
0

Поделиться темой:


  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика