新浪微博php7升级实践,PHP7线上system time飙高问题
最近刚刚全量上线PHP7,经过一晚发现个别机器的PHP-FPM占用CPU很高,整机top查看system time非常高。
通过strace查看PHP-FPM的系统调用发现存在频繁mmap/munmap 2MB内存的现象:
1
2
3
4
5
mmap(NULL,2097152,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0)=0x7f398a503000
munmap(0x7f398a503000,2097152)=0
mmap(NULL,4190208,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0)=0x7f398a304000
munmap(0x7f398a304000,1032192)=0
munmap(0x7f398a600000,1060864)=0
通过google找到了相关的怀疑对象:How to troubleshoot high load caused by php7,普遍聚焦在PHP7的一个huge page特性。
进一步google找到了鸟哥的博客,非常清楚的说明了Huge page的来由和作用:让你的PHP7更快之Hugepage 。
1
2
3
4
5
6
7
$cat/proc/meminfo|grepHuge
AnonHugePages:444416kB
HugePages_Total:0
HugePages_Free:0
HugePages_Rsvd:0
HugePages_Surp:0
Hugepagesize:2048kB
确认huge page的大小恰好就是2MB,与strace发现的调用相符,于是开始怀疑Huge page问题。后来被swoole韩天峰指正,上述mmap并没有携带HUGE_PAGE的flag,也就是说我抓的现场并不是分配huge page,之前的猜测是有问题的。
在PHP内核讨论群中提问,相关经验的同学提示我们可能是”透明大页”的问题,它是红帽系统的一个特殊机制,可以参考《新浪微博PHP7升级实践》中的介绍。它相当于把大页分配这个事情对应用透明化,会有一个独立的内核进程把我们普通分配的4KB页内存替换为huge page,可能造成性能问题。
因此结论是:
开启huge page是一个可选项,它是opcache的一个特性,一定程度优化PHP性能。
关闭”透明大页’是必选项,它是redhat的特性,可能造成性能骤降进入万劫不复。
关于Huge Page的扩展阅读
http://cenalulu.github.io/linux/huge-page-on-numa/
技术交流Q群:
374155314
聊聊技术+妹纸。
新浪微博php7升级实践,PHP7线上system time飙高问题相关推荐
- 面试官:线上服务CPU飙高怎么排查?
用jstack排查 先执行top,找到CPU占用比较高的进程 jstack 进程id > show.txt 找到进程中CPU占用比较高的线程,线程id转为16进制 到show.txt文件中根据线 ...
- 新浪微博PHP7升级实践
导读 伴随业务的增长,系统压力也在不断增加,再加上机房机架趋于饱和,无法更加有效应对各种突发事件.在这样的情况下,PC主站升级为PHP 7,有哪些技术细节可以分享? 背景 新浪微博在2016年Q2季度 ...
- eBCC性能分析最佳实践(1) - 线上lstat, vfs_fstatat 开销高情景分析...
Guide: eBCC性能分析最佳实践(0) - 开启性能分析新篇章 eBCC性能分析最佳实践(1) - 线上lstat, vfs_fstatat 开销高情景分析 eBCC性能分析最佳实践(2) - ...
- 分布式缓存的25个优秀实践与线上案例 done
杨彪,蚂蚁金服技术专家,<分布式服务架构:原理.设计与实战>和<可伸缩服务架构:框架与中间件>作者.近10年互联网和游戏行业工作经验. 本文节选自即将出版的<可伸缩服务架 ...
- Java 线上cpu占用过高分析
转载于:https://blog.csdn.net/ch999999999999999999/article/details/113151519 感谢作者:ch999999999999999999 J ...
- 日请求亿级的QQ会员AMS平台PHP7升级实践
QQ会员活动运营平台(AMS),是QQ会员增值运营业务的重要载体之一,承担海量活动运营的Web系统.AMS是一个主要采用PHP语言实现的活动运营平台, CGI日请求3亿左右,高峰期达到8亿.然而,在之 ...
- 技术实践|线上故障分析及解决方法(上)
线上故障通常是指大规模的影响线上服务可用性的问题或者事件,而对于线上故障的处理不仅是一项技术活,更是对技术人员/技术团队应急反应能力的考验.本文主要从线上故障的分类.应对思路.出现原因等方面入手,总结 ...
- 一次jvm导致线上内存占用过高问题定位
背景:8G物理内存,8核CPU,jvm使用的G1垃圾回收器. 问题:线上内存占用告警,内存占用超过85%,且现象一直持续. 分析 看一下jvm启动参数配置: -Xms6144m -Xmx6144m - ...
- 记录一次线上CPU负载过高的排查过程
背景 一大早收到运维同学反馈.线上某台机器cpu的负载达到了97%以上,为了不影响机器上服务的正常运行,急需找到导致负载过高的原因并将负载降到合理的区间. 用到命令 top/uptime:查看负载情况 ...
最新文章
- pythontcp服务器教程_tcp服务端无线为多个客户端服务|python基础教程|python入门|python教程...
- 4个mos管驱动的全桥电路原理_最经典MOS管电路工作原理及详解没有之一
- java 图形校验_java图形验证码生成工具类 web页面校验验证码
- 《剑指offer》删除链表中重复的节点
- 遇到指针别害怕!先把这篇笔记看一遍~
- 32bit win7 在VMWARE中安装64位的redhat LINUX4.7
- Vue-CLI搭建Vue项目
- db2 控制台执行创建函数语句_DB2 从命令行创建SQL存储过程
- Gstreamer官方教程汇总2---GStreamer concepts
- Google Cloud
- 一个好用的不基于时间的同步文件的软件 —— Allway sync 文件同步
- 程序员眼中的中国传统文化-王阳明《传习录》3
- 小米笔记本备份、SSD分区、U盘Ghost详解及对产品的建议
- bp神经网络综合评价例题,bp神经网络综合评价法
- python灰色关联度分析代码_GRA灰色关联度分析学习 附python代码
- 新手需要知道decode 和 encode 区别【转载】
- android:RecyclerView交互动画(上下拖动,左右滑动删除)
- OpenWrt——进行PPPoE拨号时透过路由器访问光猫的方法
- Mac报错:TSM AdjustCapsLockLEDForKeyTransitionHandling_ISSetPhysicalKeyboardCapsLockLED Inhibit
- 关于斐讯K2无管理员密码路由器重置问题
热门文章
- 剑指OFFER之包含min函数的栈(九度OJ1522)
- maven 编译后无配置文件解决办法
- DPM 2010(二)---BMR裸机恢复域控制器
- 去掉QQ2008的腾讯迷你首页和聊天时的广告
- shell脚本:判断本地和远程文件是否存在
- matlab已知xyz拟合标定map,matlab练习题
- python迭代_Python迭代
- easyui前端实现多选框_在实际案例中学习前端开发(第二期)
- mysql数据库和表的关系_MySQL数据库学习【第六篇】表与表之间的关系
- error C2440: 'static_cast' : cannot convert from 'void (__thiscall CMainFrame::* )(void)' to ...