【问题标题】:Linux web server configuration for AJAX web page highly consumed CPU [closed]AJAX 网页的 Linux Web 服务器配置高消耗 CPU [关闭]
【发布时间】:2019-12-23 09:33:27
【问题描述】:

我有一个基于 AJAX 的带有聊天功能的 www 服务,它消耗大量 CPU 资源并需要许多数据库连接。我正在询问带有 MariaDB 和 Apache 以及 PHP 5.6(7.x 不适用于我的服务)的 Debian 9 的这种场景的服务器配置。我将参数最大连接数(my.cnf 中的 max_used_connections)增加到 2000:max_connections = 2000 以避免数据库错误。 我还应该更改哪个参数以提高服务器的工作效率并减少聊天延迟?

我进行了测试:同时我在一个浏览器(Chrome 76.0.3809.100)上打开了 200 个聊天窗口,我看到了大约 60 秒的延迟(由于 php 代码,它应该是 1 秒)并且我观察到我的服务器有只有 21 个 Web 进程。如何改进服务器配置?

以下是来自服务器控制台的命令“ps aux”的输出,我用它来查看进程的 CPU 使用率

USER    PID %CPU    %MEM    VSZ RSS TTY STAT    START   TIME    COMMAND    
postfix 21107   0   0   83704   6816    ?   S   22:12   00:00   pickup    
root    25493   0   0   0   0   ?   I   22:58   00:00   [kworker/u16:1-e]    
root    26082   0   0   0   0   ?   I   21:46   00:00   [kworker/6:0-eve]    
root    26094   0   0   0   0   ?   I   21:46   00:00   [kworker/7:2-cgr]    
root    26253   0   0   0   0   ?   I   21:47   00:00   [kworker/4:1-eve]    
root    26417   0   0   0   0   ?   I   21:47   00:00   [kworker/2:0-eve]    
www-data    26580   0   0   519484  10732   ?   S   21:48   00:00   php-fpm:    
www-data    26581   0   0   519484  10732   ?   S   21:48   00:00   php-fpm:    
root    26585   0   0   0   0   ?   I   21:48   00:00   [kworker/1:0-eve]    
root    27185   0   0   0   0   ?   I   21:51   00:00   [kworker/0:1-eve]
root    28031   0   0   0   0   ?   I   23:00   00:00   [kworker/2:2-eve]    
postfix 30240   0   0   83704   6800    ?   S   23:00   00:00   anvil    
root    1029    0,1 0   658632  18944   ?   Sl  20:32   00:09   /usr/bin/python3    
clamav  734 0,2 2,4 1008592 787196  ?   Ssl 20:32   00:25   /usr/sbin/clamd    
www-data    9793    3,8 0,3 605264  114312  ?   S   22:05   02:22   /usr/sbin/apache2    
www-data    10709   3,9 0,3 853140  120500  ?   S   22:06   02:25   /usr/sbin/apache2    
www-data    10668   4,3 0,3 597996  104668  ?   S   22:06   02:40   /usr/sbin/apache2    
www-data    9883    4,5 0,3 597060  105312  ?   S   22:05   02:47   /usr/sbin/apache2    
www-data    9791    4,6 0,3 604864  115324  ?   R   22:05   02:52   /usr/sbin/apache2    
www-data    9792    5,1 0,3 598828  108416  ?   S   22:05   03:07   /usr/sbin/apache2    
www-data    10073   5,4 0,3 599192  105860  ?   S   22:05   03:18   /usr/sbin/apache2    
www-data    10363   5,6 0,3 844492  113288  ?   S   22:06   03:25   /usr/sbin/apache    
www-data    9794    5,8 0,3 851780  120412  ?   S   22:05   03:34   /usr/sbin/apache2    
www-data    9795    6   0,3 599708  108424  ?   S   22:05   03:42   /usr/sbin/apache2    
www-data    9822    6,1 0,3 602568  109008  ?   S   22:05   03:45   /usr/sbin/apache2    
www-data    10710   6,3 0,3 598836  105540  ?   S   22:06   03:52   /usr/sbin/apache2    
www-data    27116   7,2 0,3 608036  114096  ?   S   22:44   01:37   /usr/sbin/apache2    
mysql   946 9   0,6 958820  221472  ?   Ssl 20:32   14:01   /usr/sbin/mysqld    
www-data    27013   9,5 0,3 598352  104688  ?   S   22:44   02:08   /usr/sbin/apache2    
www-data    27119   10,5    0,3 602800  110460  ?   S   22:44   02:21   /usr/sbin/apache2    
www-data    27054   10,6    0,3 596540  104216  ?   S   22:44   02:23   /usr/sbin/apache2    
www-data    27117   10,8    0,3 596612  103268  ?   S   22:44   02:25   /usr/sbin/apache2

【问题讨论】:

  • 在不知道你的代码做什么的情况下说不出来。
  • 附加信息请求。在 pastebin.com 上发布并分享链接。您的 MySQL 主机服务器的 RAM 大小 文本结果: B) SHOW GLOBAL STATUS;至少 24 小时正常运行时间后 C) 显示全局变量; D) 显示完整的处理程序; E) 完成 MySQLTuner 报告 F) SHOW ENGINE INNODB STATUS;和 可选的非常有用的信息,如果可用,包括 - htop 或 top 或 mytop 用于大多数活动应用程序,ulimit -a 用于 linux/unix 限制列表,iostat -xm 5 3 用于按设备和核心/cpu 计数的 IOPS,用于服务器工作负载调整分析。
  • @Sami Kuhmonen 此代码是服务器控制台命令“ps aux”的输出,我用它来查看进程的 CPU 使用率
  • 是的,但是您没有展示或解释任何有关代码的内容。它有什么作用?连接是如何完成的?它对数据库有什么作用?消息是如何来回发送的?没有任何信息,唯一可以给出的建议是完全模糊和笼统的,可能不会有太大帮助。对 codearchitecture 的简单更改可能会解决所有问题,而不是假设需要更改配置。毕竟这是一个编程网站。
  • @Sami Kuhmonen - 你错了,可以给我一些宝贵的建议。这是由艾哈迈德·阿拉法完成的。非常感谢艾哈迈德!首先,我改进了我的代码以从 PHP5.6 迁移到 PHP 7.3。迁移后,我能够打开 PHP-FPM,这是一个很好的举措。最后,对于 200 个并发用户,我能够将我的 AJAX 网页响应时间从大约 60 秒减少到不到 5 秒。不带 PHP-FPM 的 PHP 5.6 的 ApacheBench 结果:50% 5831 66% 10450 75% 15788 99% 128434 100% 128486 带 PHP-FPM 的 PHP 7.3:50% 2399 66% 2434 75% 2464 99% 3723 100% 4026 >

标签: mysql linux apache server web-performance


【解决方案1】:

您的环境可以通过以下方式得到增强:

  • 检查服务器的硬件并确定 RAM 和 CPU 的要求。
  • 使用 Mysqltuner 脚本调整数据库引擎性能。
  • 检查您的查询并尝试增强它们。
  • 在 Apache 上安装缓存模块,例如:memcached 和 apcu。
  • 建议使用 PHP-FPM 以获得更好的性能。

然后您需要进行基准测试以检查硬件规格和配置是否适合您的环境。

有许多用于基准测试的工具,例如:ab - Apache HTTP 基准测试工具,或任何其他在线工具。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 2018-10-22
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    相关资源
    最近更新 更多