【发布时间】: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 使用率
-
是的,但是您没有展示或解释任何有关代码的内容。它有什么作用?连接是如何完成的?它对数据库有什么作用?消息是如何来回发送的?没有任何信息,唯一可以给出的建议是完全模糊和笼统的,可能不会有太大帮助。对 code 或 architecture 的简单更改可能会解决所有问题,而不是假设需要更改配置。毕竟这是一个编程网站。
-
@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