PHP 网站内存占用很高,一做活动就挂了,大佬们帮忙看看

2019-07-16 09:03:49 +08:00
 haiyan
服务器就一个小说网站,服务器阿里云的 2 核 4G 配置,mysql 数据库 1.5G ,日活 2000 这样,平时网站内存就占到了 80%多了,mysql 占了 20%。如果发个促销网址,人同时一上来就挂,实际那两分钟来的人也还不多 1000,必须重启 php-fpm 才行。同配置的.net 版系统就毫无压力,索引设置了,日志也看了,现在不知道是配置低了,还是程序性能太差了。
请大家帮忙提点见解,谢谢了!
7679 次点击
所在节点    程序员
74 条回复
flashrick
2019-07-16 10:05:55 +08:00
@components 小说用 nosql 存吧,用 redis 都好,
haiyan
2019-07-16 10:12:40 +08:00
@components
@flashrick 心塞啊,.net 版的还是 win+iis+mssql 应该更占内存啊
haiyan
2019-07-16 10:12:59 +08:00
@lifeintools 能否指点一下,哪里的参数
jsjscool
2019-07-16 10:14:29 +08:00
@haiyan 这明显不是数据库的问题,初步怀疑是哪个资源文件锁了。编程最好不要靠猜,https://github.com/laynefyc/xhgui-branch 装一下,分分钟解决问题。
dafengchui
2019-07-16 10:14:51 +08:00
其实我觉得估计用了 mysql 的默认配置, 优化下 mysql
mumbler
2019-07-16 10:22:23 +08:00
遇到过同样问题,最后发现是 nginx 配置问题,并发设置太低
haiyan
2019-07-16 10:23:22 +08:00
@jsjscool 学习一下,谢谢你
HiCode
2019-07-16 10:47:55 +08:00
“服务器阿里云的 2 核 4G 配置,mysql 数据库 1.5G ,日活 2000 这样,平时网站内存就占到了 80%多了,mysql 占了 20%”


我感觉代码问题挺大吧,“平时网站内存就占到了 80%多”,2000 日活,什么情况下会让 php 把内存都占了?

楼主表述不正确,还是其他?
haiyan
2019-07-16 11:07:06 +08:00
@HiCode
看错了,对 linux 的不了解,实际是这样的
物理内存:共 3.702 G , 已用 3.082 G , 空闲 0.62 G , 使用率 83.25%

Cache 化内存为 2.058 G , 使用率 55.59 % | Buffers 缓冲为 0.15 G

真实内存使用 0.874 G , 真实内存空闲 2.828 G , 使用率 23.6 %
dongya
2019-07-16 11:09:00 +08:00
@AngryPanda 哈哈, 你说对了
kiwier
2019-07-16 11:09:39 +08:00
哥哥 tp3 该换了,漏洞太多,并且性能不行
yc8332
2019-07-16 11:10:09 +08:00
就是你的 php 程序速度太慢了。。。并发大了就只能排队了。。。加更多 php 进程没用,数据库连接数是一个问题,还有就是 cpu 也忙不过来。。。还是要优化你的 php 程序。。
Mazexal
2019-07-16 11:10:52 +08:00
.net core 天下第一
sggggy
2019-07-16 11:11:25 +08:00
初学 linux 的话建议安装 htop,用 htop 去看,不会因为不理解 top 的命令而心惊肉跳的。之前我也遇到老是有程序员问运维,为啥内存消耗这么高,要不要重启一下啥的…… windows 带来的理念。
vincenttone
2019-07-16 11:14:16 +08:00
看当时的连接时长和数量,关键部分添加日志(比如请求和响应时长、数据库连接时长、timewait 的情况),添加内存和 cpu 负载的监控。这样你才知道具体问题出在哪里,猜测没用。
haiyan
2019-07-16 11:17:26 +08:00
@dongya
@Mazexal 给 php 招黑了 🙈

@kiwier 接手的项目,不是我开发的,换就是重新搞,搞不起啊
HiCode
2019-07-16 11:21:54 +08:00
@haiyan

这个内存使用率也偏高了,日活 2000,不是每分钟 2000,我建议是从内存占用入手。
goodspb
2019-07-16 12:53:30 +08:00
和内存无关系。主要是 fpm 被耗尽了,先查一下 fpm 慢日志,看看是哪里导致的慢。临时的解决方案应该是调整一下 PM 的配置
avenger
2019-07-16 12:56:42 +08:00
phpfpm 配置贴一下
azh7138m
2019-07-16 12:59:48 +08:00
你可以考虑换 fpm 走 http 和 nginx 交互,代价是虽然能用户侧不会出现 50x,但是响应速度会变慢,实际 qps 可能会降低。
还是要做好 profiling,看下是慢在哪里了。
不过,2 分钟 单机 1k UV 其实很高了,一个 UV 毕竟对应了不少业务。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/583298

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX