直播间,workman的内存约来越大,自己不会释放,一直会到服务器内存满了为止!请教大佬们,这个该怎么处理呢?
IMWorker可能业务有内存泄漏,需要自己定位下代码
嗯嗯谢谢啦,我记得已经到达了一定量,workman会重启,又重4M开始叠加
webman有子进程内存监控,workerman本身没有
噢,IMWorker 随着人数占用内存越来越大,我把php.ini memory_limit 设置成8G,服务器内存是16G,现在有6000人数,随着人数增长,内存会一直不够用,我想问下,业务已经优化了,没有什么可在优化的了,现在该怎么处理呀?其实最好的可以类似重启一样的操作,可以把占用的内存又重新归0,这样是最好的了
内存泄漏一般是长周期数组里无限添加元素导致的。
如果实在定位不到业务内存泄漏的代码,定时reload也可以。像根据内存占用定时执行某个程序问webman/ai就好,下面是AI回复
问 写一个sh脚本,服务器内存使用量大于90%时,执行 php /your/path/start.php reload。利用crontab 每分钟执行一次这个脚本。
AI回复 可以按照以下步骤设置定时任务来每分钟执行该脚本:
check_memory.sh
#!/bin/bash # 获取当前内存使用率 memory_usage=$(free | awk '/Mem/{printf("%.2f"), $3/$2 * 100}') # 判断内存使用率是否大于90% if (( $(echo "$memory_usage > 90" | bc -l) )); then # 执行 reload 命令 php /your/path/start.php reload fi
chmod +x check_memory.sh
crontab -e
* * * * * /path/to/check_memory.sh
请将/path/to/check_memory.sh替换为实际的.sh文件路径。
/path/to/check_memory.sh
现在,该脚本将会每分钟执行一次,并在服务器内存使用量大于90%时执行php /your/path/start.php reload命令。
php /your/path/start.php reload
执行这个命令 php start.php reload
之后报这个错误
SendBufferToWorker fail. The connections between Gateway and BusinessWorker are not ready.
exit_count 显示1 exit_status 还是0
我们模拟3个账号在直播间一直发消息,发1万条消息,imworker占用很少内存,真实线上环境6000人同时在线,有人发送消息,imworker内存就会累积很快,30分钟就能达到7G
跪求大佬指点~非常感谢!
真实在线 6000人。。。这个用户体量 老弟还不考虑多分布式 吗
大佬,我研究下分布式,6000个人多吗?我看官方说几万都没有问题
几万肯定没问题的。
6000不多,前两天还看到群里有人2台gateway Worker支持了40万设备在线
大佬,那还是我代码有问题,哭晕在厕所了,我们是6000多人 一直聊天和抢红包
IMWorker可能业务有内存泄漏,需要自己定位下代码
嗯嗯谢谢啦,我记得已经到达了一定量,workman会重启,又重4M开始叠加
webman有子进程内存监控,workerman本身没有
噢,IMWorker 随着人数占用内存越来越大,我把php.ini memory_limit 设置成8G,服务器内存是16G,现在有6000人数,随着人数增长,内存会一直不够用,我想问下,业务已经优化了,没有什么可在优化的了,现在该怎么处理呀?其实最好的可以类似重启一样的操作,可以把占用的内存又重新归0,这样是最好的了
内存泄漏一般是长周期数组里无限添加元素导致的。
如果实在定位不到业务内存泄漏的代码,定时reload也可以。像根据内存占用定时执行某个程序问webman/ai就好,下面是AI回复
问
写一个sh脚本,服务器内存使用量大于90%时,执行 php /your/path/start.php reload。利用crontab 每分钟执行一次这个脚本。
AI回复
可以按照以下步骤设置定时任务来每分钟执行该脚本:
check_memory.sh
,并将以下内容复制到文件中:请将
/path/to/check_memory.sh
替换为实际的.sh文件路径。现在,该脚本将会每分钟执行一次,并在服务器内存使用量大于90%时执行
php /your/path/start.php reload
命令。执行这个命令 php start.php reload
之后报这个错误
SendBufferToWorker fail. The connections between Gateway and BusinessWorker are not ready.
exit_count 显示1
exit_status 还是0
我们模拟3个账号在直播间一直发消息,发1万条消息,imworker占用很少内存,真实线上环境6000人同时在线,有人发送消息,imworker内存就会累积很快,30分钟就能达到7G
跪求大佬指点~非常感谢!
真实在线 6000人。。。这个用户体量 老弟还不考虑多分布式 吗
大佬,我研究下分布式,6000个人多吗?我看官方说几万都没有问题
几万肯定没问题的。
6000不多,前两天还看到群里有人2台gateway Worker支持了40万设备在线
大佬,那还是我代码有问题,哭晕在厕所了,我们是6000多人 一直聊天和抢红包