После установки плагинов сервер начал лагать, как найти какой грузит?

20 просмотров · 4 сообщений

Belissimo
Вчера, 17:12
#1
Всем привет. Может кто сталкивался. Поставил на сервер несколько плагинов и после этого начались какие то лаги, иногда фризит и пинг у игроков скачет.

Сразу несколько ставил поэтому не понимаю какой именно виноват. Сервер на линуксе, CS2, metamod + counterstrikesharp.

В консоли иногда такое проскакивает:

server tick took 48ms
server tick took 72ms
server tick took 105ms

еще бывает

[CSS] Exception while executing callback

плагины сейчас примерно такие:

css_plugins list
AdminSystem
RankSystem
Shop
WeaponMenu
Advertisements
Admin HELP АДМИНИСТРАТОР
Вчера, 17:17
#2
Начать лучше с отключения плагинов по одному, но сначала посмотрите серверную консоль в момент просадки. server tick took 100ms+ уже говорит о заметной задержке обработки тика.

В первую очередь я бы временно отключил RankSystem и Shop, особенно если они часто работают с базой данных. После каждого отключения проверяйте сервер 10–15 минут под нагрузкой.

Ошибка [CSS] Exception while executing callback тоже важна — желательно скинуть строки после неё, там обычно указано название плагина или метод, который вызвал исключение.

Сам сервер перезапускать после каждого теста не всегда обязательно — некоторые плагины CounterStrikeSharp можно выгружать/загружать отдельно. Если пришлёте полный кусок ошибки из консоли, можно будет точнее определить виновника.
Belissimo
Вчера, 17:20
#3
[CSS] Exception while executing callback
System.NullReferenceException: Object reference not set to an instance of an object.
at RankSystem.RankSystem.OnPlayerDeath(EventPlayerDeath event, GameEventInfo info)
at CounterStrikeSharp.API.Core.Plugin.PluginContext.<RegisterEventHandler>b__0_0(GameEvent e)

[Server] server tick took 87ms
[Server] server tick took 113ms

[CSS] Exception while executing callback
System.Exception: Database query failed
at RankSystem.Database.GetPlayerStats(UInt64 steamId)
at RankSystem.RankSystem.OnPlayerDeath(EventPlayerDeath event, GameEventInfo info)

[Server] server tick took 146ms

вот нашел, это оно? получается ranksystem косячит? когда игроков побольше таких сообщений прям много начинает сыпатся
Admin HELP АДМИНИСТРАТОР
Вчера, 18:19
#4
Admin HELP написал:
По логу проблема действительно похожа на RankSystem: ошибка возникает в OnPlayerDeath, а дальше плагин обращается к базе данных. Если это ваш плагин или есть доступ к исходникам, я бы в первую очередь добавил проверку игрока и убрал синхронный запрос к БД из события смерти.

Например, обработчик лучше делать примерно так:
Показать код(40 строк)
> 
> public HookResult OnPlayerDeath(EventPlayerDeath @event, GameEventInfo info)
> {
> var player = @event.Attacker;
> 
> if (player == null ||
> !player.IsValid ||
> player.IsBot ||
> player.SteamID == 0)
> {
> return HookResult.Continue;
> }
> 
> try
> {
> _ = Task.Run(async () =>
> {
> try
> {
> var stats = await Database.GetPlayerStatsAsync(player.SteamID);
> 
> if (stats == null)
> return;
> 
> // Обновление статистики
> await Database.AddKillAsync(player.SteamID);
> }
> catch (Exception ex)
> {
> Console.WriteLine($"[RankSystem] DB error: {ex.Message}");
> }
> });
> }
> catch (Exception ex)
> {
> Console.WriteLine($"[RankSystem] OnPlayerDeath error: {ex}");
> }
> 
> return HookResult.Continue;
> }
Чтобы ответить, войдите в аккаунт.