Таймауты клиентов при sv_pure > 0

Тема в разделе "Общие вопросы", создана пользователем reji, 8 июл 2013.

  1. reji

    reji

    Сообщения:
    7
    Симпатии:
    0
    Доброго времени.
    Обнаружил на своих серверах, что при sv_pure, равном 1, где-то 20% игроков отключаются от сервера по таймауту. Вот кусочек серверного лога:
    PHP:
    l0707013.log:L 07/07/2013 16:20:04"CUda<189><STEAM_ххх><>" disconnected (reason "CUda timed out")
    l0707013.log:L 07/07/2013 16:22:11"[Areal]_DahaKa_<207><STEAM_ххх><Red>" disconnected (reason "[Areal]_DahaKa_ timed out")
    l0707013.log:L 07/07/2013 16:26:04"[Areal]_DahaKa_<217><STEAM_ххх><>" disconnected (reason "[Areal]_DahaKa_ timed out")
    l0707013.log:L 07/07/2013 16:26:46"copter<215><STEAM_ххх><Red>" disconnected (reason "copter timed out")
    l0707013.log:L 07/07/2013 16:26:56"SwH<216><STEAM_ххх><Blue>" disconnected (reason "SwH timed out")
    l0707013.log:L 07/07/2013 16:29:58"Атата МаСтер<211><STEAM_ххх><Spectator>" disconnected (reason "Атата МаСтер timed out")
    Если sv_pure = -1 или 0, проценты поменьше - не более 10%.

    Не уверен, есть ли здесь проблема. Быть может, это отрабатывает sv_pure, отключая нехороших игроков? Но разве не должно быть в логе соответствующего сообщения?

    Вот и хотел спросить у ув. форумчан, не наблюдали ли такой картины у себя?

    Проценты считались таким perl-скриптом:
    PHP:
    #!/usr/bin/perl

    $connections 0;
    $userexits 0;
    $timeouts 0;

    while (<>) {
      if (/
    connectedaddress/) {
        
    $connections++;
      }
      
    elsif (/Disconnect by user\./) {
        
    $userexits++;
      }
      
    elsif (/reason .* timed out/) {
        
    $timeouts++;
      }
    }
    $tp int($timeouts 1000 $connections 0.5) / 10;
    $up int($userexits 1000 $connections 0.5) / 10;
    print 
    "Connections: $connections\n";
    print 
    "\"Disconnect by user\": $userexits ($up%)\n";
    print 
    "\"Timed out\": $timeouts ($tp%)\n";

    Игра: Team Fortress 2. Хостинг: myarena.ru. Настройки и установленные плагины приведены ниже, в посте №4.
     
    Последнее редактирование: 11 июл 2013
  2. KorDen

    KorDen Atra esterní ono thelduin! Ньюсмейкер

    Сообщения:
    2.194
    Симпатии:
    1.398
    Хм, интересное наблюдение. Возможно таймаут происходит сразу в момент подключения (т.е. когда передается вайлист), интересно было бы еще найти ближайшие подключения игроков, отвалившихся по таймауту, можно ведь заметить например у [Areal]_DahaKa_ что дважды за 4 минуты...
     
  3. The Night Fury

    The Night Fury Администратор

    Сообщения:
    1.222
    Симпатии:
    915
    reji, по идее, sv_pure будет отключать не таймаутом.

    Какие плагины и модули включены? Какие настройки у сервера?
     
  4. reji

    reji

    Сообщения:
    7
    Симпатии:
    0
    Стоит лишь SourceMod.
    sm plugins list
    Код:
    [SM] Listing 25 plugins:
      01 "Admin Help" (1.5.0-dev+3840) by AlliedModders LLC
      02 "Client Preferences" (1.5.0-dev+3840) by AlliedModders LLC
      03 "AFK Manager" (3.5.0) by Rothgar
      04 "[TF2] Better Vote Scramble" (1.1.0) by Dr. McKay
      05 "Admin File Reader" (1.5.0-dev+3840) by AlliedModders LLC
      06 "Nextmap" (1.5.0-dev+3840) by AlliedModders LLC
      07 "Basic Chat" (1.5.0-dev+3840) by AlliedModders LLC
      08 "Reserved Slots" (1.5.0-dev+3840) by AlliedModders LLC
      09 "Map Nominations" (1.5.0-dev+3840) by AlliedModders LLC
      10 "Fun Commands" (1.5.0-dev+3840) by AlliedModders LLC
      11 "Basic Ban Commands" (1.5.0-dev+3840) by AlliedModders LLC
      12 "Anti-Flood" (1.5.0-dev+3840) by AlliedModders LLC
      13 "MapChooser" (1.5.0-dev+3840) by AlliedModders LLC
      14 "Rock The Vote" (1.5.0-dev+3840) by AlliedModders LLC
      15 "Win panel for losing team" (1.4) by Reflex
      16 "Player Commands" (1.5.0-dev+3840) by AlliedModders LLC
      17 "Admin Menu" (1.5.0-dev+3840) by AlliedModders LLC
      18 "Fun Votes" (1.5.0-dev+3840) by AlliedModders LLC
      19 "Basic Commands" (1.5.0-dev+3840) by AlliedModders LLC
      20 "Sound Commands" (1.5.0-dev+3840) by AlliedModders LLC
      21 "Basic Comm Control" (1.5.0-dev+3840) by AlliedModders LLC
      22 "Players Votes" (1.5.0) by The Resident, pZv!
      23 "RandomCycle" (1.5.0-dev+3840) by AlliedModders LLC
      24 "Basic Votes" (1.5.0-dev+3840) by AlliedModders LLC
      25 "Basic Info Triggers" (1.5.0-dev+3840) by AlliedModders LLC

    autoexec.cfg
    Код:
    sv_region 255
    mapcyclefile "cfg/mapcycle.txt"
    
    exec srctv.cfg
    
    exec sourcemod/playersvotes.cfg
    
    // Установка значения sv_pure *до* загрузки первой карты
    sv_pure 1
    
    // Регистрация сервера в Steam
    tf_server_identity_account_id xxx
    tf_server_identity_token "xxx"
    
    // Activates/deactivates Lobby-based hosting mode
    // 1 = Put in quickplay pool (based on current map)
    tf_mm_servermode 1
    
    // Логи для HLStatsX:CE
    log on
    logaddress_add xxx
    
    // Отключение встроенной в игру системы голосования, она заменена плагинами
    sv_allow_votes 0
    
    // "Внезапная смерть"
    mp_stalemate_enable 1
    // В режиме внезапной смерти доступно только оружие ближнего боя
    mp_stalemate_meleeonly 1

    server.cfg
    Код:
    hostname "xxx"
    rcon_password xxx
    decalfrequency 10
    mp_allowspectators 1
    mp_autoteambalance 1
    mp_chattime 10
    mp_decals 300
    mp_fadetoblack 0
    mp_falldamage 1
    mp_flashlight 1
    mp_footsteps 1
    mp_forcecamera 1
    mp_forcerespawn 1
    mp_fraglimit 0
    mp_friendlyfire 0
    mp_maxrounds 0
    mp_timelimit 30
    mp_weaponstay 1
    mp_winlimit 0
    sv_allowdownload 1
    sv_allowupload 1
    sv_alltalk 0
    sv_gravity 800
    sv_pausable 0
    sv_voiceenable 1
    sv_mincmdrate 40
    sv_pure 1
    sv_turbophysics 0
    net_maxfilesize 128
    tf_flag_caps_per_round 3
    sv_downloadurl "xxx"
    // Диагностика проблемы с таймаутами
    // Отключать клиентов, когда обнаружено изменение файлов
    sv_pure_kick_clients 1
    // Писать в консоль клиента и сервера сообщение об измененных файлах
    sv_pure_trace 1

    pure_server_whitelist.txt, почти дефолтный
    Код:
    whitelist
    {
        // Example custom server whitelist.
        //
        // Do not modify this file.  Instead, rename this file to "pure_server_whitelist.txt" and then modify it as appropriate.
        //
        // sv_pure values are in order of "increasing pureness":
        //
        //   -1: No restrictions.  Allow clients to load any files.
        //    0: Only load pure_server_minimal.txt.
        //    1: Load pure_server_full.txt, followed by pure_server_whitelist.txt (the custom file).
        //       Also, in this mode, the server may specify additional public keys that it considers to be trusted.
        //    2: Load pure_server_full.txt only.
        //       In this mode, user only the public keys listed in trusted_keys_base are used.
        //
        // If multiple rules apply to the same file, then the rule listed later (or from the file loaded later) takes priority.
        // Therefore, because the custom whitelist file is loaded last, after a fully pure whitelist has been loaded, typically
        // the custom whitelist file is used to carve out exceptions (where the server wants to be more permissive), rather than
        // listing the files that are requested to be.
        //
        // 2 different rule types may be used:
        //
        //    trusted_source - require file to be loaded from a "trusted source".
        //                   A trusted source is a VPK that is signed with one of the public keys listed
        //                   in trusted_keys_base.txt or trusted_keys.txt.
        //    any - Client can use file from any source.
        //
        // For historical purposes, the following strings are also allowed:
        //
        //    allow_from_disk           - same as "any"
        //    from_steam                - same as "trusted_source"
        //  check_crc                 - same as "trusted_source"
        //  allow_from_disk+check_crc - same as "trusted_source"
    
        //
        // Three types of file specifications:
        //
        //    1. directory\*.*            - refers to all files under the directory
        //    2. directory\...            - refers to all files under the directory and all directories under that (recursively)
        //    3. directory\filename        - refers to a single file
    
        //
        // Allow custom player models.
        //    
        //models\player\...           any
        //materials\models\player\... any
    
        //
        // Allow custom spray decals.
        //
        materials\temp\...          any
        materials\vgui\logos\...    any
        materials\vgui\logos\ui\... any
        
        //
        // Allow "mymod" resources to come from disk.
        //
        //materials\mymod\... any
        //models\mymod\...    any
        //sound\mymod\...     any
    }

    К слову, это сервер TF2, хостится на myarena.ru.

    Добавлено через 7 минут
    Да, мысль, завтра попробую собрать такие данные.
    Код:
    $ grep '\[Areal\]_DahaKa_.*connected' *.log
    l0707013.log:L 07/07/2013 - 16:19:24: "[Areal]_DahaKa_<207><STEAM_ххх><>" connected, address "ххх"
    l0707013.log:L 07/07/2013 - 16:22:11: "[Areal]_DahaKa_<207><STEAM_ххх><Red>" disconnected (reason "[Areal]_DahaKa_ timed out")
    l0707013.log:L 07/07/2013 - 16:25:36: "[Areal]_DahaKa_<217><STEAM_ххх><>" connected, address "ххх"
    l0707013.log:L 07/07/2013 - 16:26:04: "[Areal]_DahaKa_<217><STEAM_ххх><>" disconnected (reason "[Areal]_DahaKa_ timed out")
    
     
    Последнее редактирование: 8 июл 2013
  5. The Night Fury

    The Night Fury Администратор

    Сообщения:
    1.222
    Симпатии:
    915
    reji, можно попробовать отключить кик игроков по pure и посмотреть на результат.
    Как вариант, ибо у меня сейчас всё в порядке с TF.
     
  6. reji

    reji

    Сообщения:
    7
    Симпатии:
    0
    The Night Fury, уже пробовал, "sv_pure_kick_clients 0" и картина была та же.
     
  7. The Night Fury

    The Night Fury Администратор

    Сообщения:
    1.222
    Симпатии:
    915
    reji, ладно. А что клиенты говорят, как они видят отключение?
     
  8. reji

    reji

    Сообщения:
    7
    Симпатии:
    0
    The Night Fury, все, что я пока слышал, это "просто отключило". Негусто... попробую получить больше сведений. Вот бы лог консоли с клиента, но ни у админов, ни у постояльцев отключений пока не замечено.
     
  9. KorDen

    KorDen Atra esterní ono thelduin! Ньюсмейкер

    Сообщения:
    2.194
    Симпатии:
    1.398
    sv_pure_kick_clients отключает с причиной вроде "Pure Server: File ********* ...." не помню точно, но там точно есть упоминание про pure server.

    Логи уже интереснее
    Код:
    l0707013.log:L 07/07/2013 - 16:19:24: "[Areal]_DahaKa_<207><STEAM_ххх><>" connected, address "ххх"
    l0707013.log:L 07/07/2013 - 16:22:11: "[Areal]_DahaKa_<207><STEAM_ххх><Red>" disconnected (reason "[Areal]_DahaKa_ timed out")
    Где-то две минуты и видно что уже присоединился игрок к команде

    Код:
    l0707013.log:L 07/07/2013 - 16:25:36: "[Areal]_DahaKa_<217><STEAM_ххх><>" connected, address "ххх"
    l0707013.log:L 07/07/2013 - 16:26:04: "[Areal]_DahaKa_<217><STEAM_ххх><>" disconnected (reason "[Areal]_DahaKa_ timed out")
    А вот тут уже не присоединился к команде, да и по времени явно видно, что отваливание произошло при подключении.

    Ситуация что-то напоминает мне старинный баг с sv_pure, который в то время был во всех переведенных на стимпайп играх, но его пофиксили еще до релиза TF2. Возможно сейчас происходит что-то подобное, либо еще какой-то глюк...

    Попробую поискать на гитхабе и в Mailing Lists, авось чего накопаю
     
    hellgu и reji нравится это.
  10. hellgu

    hellgu

    Сообщения:
    119
    Симпатии:
    30
    У меня было все норм, но когда поставил Zombie Reloaded тоже началась такая проблема ...
     
  11. reji

    reji

    Сообщения:
    7
    Симпатии:
    0
    Ничего такого нет. Хм...
    Да уж, похоже у sv_pure богатая история непрорисованных текстур и падений серверов и клиентов :)
    Никакой системы в таймаутах, вроде, нет. Ни в продолжительности сессий игроков, ни по времени между таймаутами. Это происходит на всех картах, в том числе и на официальных.
    Любопытно, что сегодня после установки SourceIRC и SMAC с последующим "sm plugin refresh", таймауты некоторое время происходили чаще, иногда игроки вылетали за короткое время партиями по 3. Подобное мы уже видели, когда ставили плагин для HLStatsX:CE, в панике быстренько его удалили :)

    То, что похожей ситуации не нашел поиском-гуглением, наводит на мысль, что где-то намудрено с настройками все-таки.

    Сервер Team Fortress 2, не CS, хотя пробовали отключать по одному те плагины, что поставили последними. На втором, тестовом, сервере стоял SourceMod с родными только плагинами, и тоже таймауты были. Попробую голенький сервер поставить.