Open Jamlee opened 4 years ago
问题描述 在本地运行、或者其他Ubuntu主机运行是仅使用内存50MB以内,到线上阿里云环境发现使用了200MB内存。内存使用虽然和swoole 的进程数量多少有关,但是线上线下配置是一样,应该是同样的CPU和内存消耗。
排查过程
由此确定下来阿里云线上环境的Linux内核参数可能出现问题。查看内存后发现/proc/memeinfo下 pgpout pgpint 明显比其他虚拟机少10倍的数字,经过查阅发现是由于开启的了透明大页内存的缘故。
透明大页
问题解决 关闭透明大页。
echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag
自动关闭
sudo tee /etc/systemd/system/disable-thp.service <<-'EOF' [Unit] Description=Disable Transparent Huge Pages (THP) [Service] Type=simple ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag" [Install] WantedBy=multi-user.target EOF sudo systemctl daemon-reload sudo systemctl start disable-thp sudo systemctl enable disable-thp
期望更新 启动框架时提示一个warning,类似于mongodb也会给出一个waning。
最后的疑惑 为什么think-swoole 看来是正常的呢,用的同样think-swoole ? 能帮忙想想是哪里没有思考对。
题外话:swoft与tpswoole测试框架性能比较 大概是由于swoft的路由不用每次都扫目录,所以好像cpu只会偶尔爆发。但是 tp 会一直cpu 100%。
周末了时间空起来啦,补上复现的方式的
大页没有选择 always,madvise 表示自主选择使用透明大页
echo 'always' > /sys/kernel/mm/transparent_hugepage/enabled echo 'always' > /sys/kernel/mm/transparent_hugepage/defrag
看到了的500MB,多了10倍内存消耗。
问题描述 在本地运行、或者其他Ubuntu主机运行是仅使用内存50MB以内,到线上阿里云环境发现使用了200MB内存。内存使用虽然和swoole 的进程数量多少有关,但是线上线下配置是一样,应该是同样的CPU和内存消耗。
排查过程
由此确定下来阿里云线上环境的Linux内核参数可能出现问题。查看内存后发现/proc/memeinfo下 pgpout pgpint 明显比其他虚拟机少10倍的数字,经过查阅发现是由于开启的了
透明大页
内存的缘故。问题解决 关闭透明大页。
自动关闭
期望更新 启动框架时提示一个warning,类似于mongodb也会给出一个waning。
最后的疑惑 为什么think-swoole 看来是正常的呢,用的同样think-swoole ? 能帮忙想想是哪里没有思考对。
题外话:swoft与tpswoole测试框架性能比较 大概是由于swoft的路由不用每次都扫目录,所以好像cpu只会偶尔爆发。但是 tp 会一直cpu 100%。