Мы используем XBT Tracker (XBTT) во FreeBSD уже довольно давно. Сейчас у нас около 500 тыс. Пиров, и они быстро растут. И у нас есть интервал объявления 700 секунд, что очень мало.
1. Единственные оптимизации для XBT Tracker, о которых я слышал в Linux:
#Backlog
net.core.netdev_max_backlog = 4096
net.core.somaxconn = 4096
# In case you use listen_check
net.ipv4.ip_local_port_range="1024 65535"
net.ipv4.tcp_syncookies = 1
#Timewait sockets (this can negatively impact clients under NAT)
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
#Firewall conntrack
net.ipv4.netfilter.ip_conntrack_max = 1048576
net.nf_conntrack_max = 1048576
Не забудьте увеличить максимальное количество открываемых файлов:
ulimit -n 1000000
и сохраните изменения в limits.conf
2. Наш XBT Tracker использует следующий патч: Listen Queue Len увеличения
3. Эта строка конфигурации может быть полезна:
listen_check = 0
а также у нас очень короткие
read_files_interval = 2
write_db_interval = 3
4. Требуется настройка MySQL, как минимум, вы должны увеличить
max_allowed_packet = 48M
5. Также в качестве примечания, в Linux XBTT использует epoll(), в то время как в других ОС он использует select(), который не подходит для высокой нагрузки.
PS. Вы можете проверить OpenTracker, если ничего не помогает. Но я не проверял это.