Linux服务器上的最大并发用户数

Linux服务器上的最大并发用户数

我有一个专用的服务器,其中包含以下信息:

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

我在这个服务器上有一个网站,该网站每天在特定时间的流量都很大,持续时间不到一小时。根据谷歌分析实时统计,高峰流量约为 6000 名用户。

当有大约 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

这些是我在 my.cnf 中对 mysql 的设置,这是 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 连接数来说。

答案1

所提供的信息自相矛盾:

2000 个并发用户

最大连接数=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

答案2

将 MySQL 最大连接数增加到 4000 以上并检查性能

相关内容