Назад | Перейти на главную страницу

Максимальное количество одновременных пользователей на сервере Linux

У меня есть выделенный сервер с этой информацией:

128G RAM
6 cores/12 threads CPU, 3.4GHz
512 SSD storage
WHM/Cpanel latest
Apache/MySQL
Centos 7.x

У меня есть единственный веб-сайт на этом сервере, который имеет большой трафик в определенное время каждого дня менее одного часа. При пиковом трафике около 6000 пользователей согласно статистике Google Analytics в реальном времени.

Среднее время загрузки страницы сервером примерно у 500 пользователей составляет около 0,15 секунды, а код веб-сайта очень оптимизирован для MySQL.

Проблема с сервером до 2000 одновременных пользователей никогда не возникает. После этого количества пользователей загрузка сервера иногда становится 100% и выше, а нагрузка mysql становится 600-900%, а веб-сайт загружается бесконечно и отображает страницу занятости сервера, и большую часть времени мне приходится перезапускать серверы mysql и apache.

Это мои текущие настройки в WHM для Apache:

Start Servers = 5
Minimum Spare Servers = 5
Maximum Spare Servers =10
Server Limit (Maximum: 20,000) = 5000
Max Request Workers = 5000
Max Connections Per Child = 10000
Max Keep-Alive Requests = unlimited
Timeout = 300

Это мои настройки для mysql в my.cnf, который по умолчанию WHM:

# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

[mysqld]
log-error=/var/lib/mysql/hosting.hostrose.com.err
performance-schema=0
default-storage-engine=MyISAM
innodb_file_per_table=1
innodb_buffer_pool_size=134217728
max_allowed_packet=268435456
open_files_limit=10000
max_connections=151

Мой вопрос, каковы наилучшие значения для этих варов, чтобы обслуживать такое количество пользователей без перегрузки или зависания сервера, особенно для номеров соединений apache и mysql.

Представленная информация противоречива:

2000 одновременных пользователей

max_connections = 151

Между тем, Apache ограничивает количество запросов до 20.

Предлагаю следующее:

  • Измените свои таблицы на InnoDB. MyISAM не подходит для параллелизма. После изменения увеличьте innodb_buffer_pool_size=134217728 к 90G Больше обсуждения: http://mysql.rjweb.org/doc.php/myisam2innodb

  • Измените Apache на 30.

  • Оставьте 151 в покое; но проверьте

    SHOW GLOBAL STATUS LIKE 'Max_used_connections';
    SHOW GLOBAL STATUS LIKE 'Threads_running';
    

Первый говорит о том, сколько соединений было одновременно подключено к MySQL. Последний говорит, сколько человек что-то делали в данный момент.

загрузка mysql становится 600-900%, а веб-сайт загружается бесконечно и отображает страницу занятости сервера

Это означает, что у вас все еще есть некоторые запросы, которые нужно оптимизировать.

Для дальнейшего анализа (если настройки и запросы) следуйте инструкциям в http://mysql.rjweb.org/doc.php/mysql_analysis

Увеличьте максимальное количество подключений MySQL до> 4000 и проверьте производительность