通知设置 新通知
PHP大会笔记:复杂PHP系统性能瓶颈问题排查和优化
会议 • zkbhj 发表了文章 • 0 个评论 • 1947 次浏览 • 2017-06-10 14:47
陌陌如何做api性能优化?
代码分析
性能个好的语法
sql优化
优化重点接口 --》 优化有问题的代码
优化语言层面 --》 优化外部调用
重构代码 --》 重构服务
通过性能检测工具xhprof数据进行筛选、统计,分析出系统瓶颈。
数据筛选和统计
查看全部
代码分析
性能个好的语法
sql优化
优化重点接口 --》 优化有问题的代码
优化语言层面 --》 优化外部调用
重构代码 --》 重构服务
通过性能检测工具xhprof数据进行筛选、统计,分析出系统瓶颈。
数据筛选和统计
查看全部
陌陌如何做api性能优化?
代码分析
性能个好的语法
sql优化
优化重点接口 --》 优化有问题的代码
优化语言层面 --》 优化外部调用
重构代码 --》 重构服务
通过性能检测工具xhprof数据进行筛选、统计,分析出系统瓶颈。
数据筛选和统计
代码分析
性能个好的语法
sql优化
优化重点接口 --》 优化有问题的代码
优化语言层面 --》 优化外部调用
重构代码 --》 重构服务
通过性能检测工具xhprof数据进行筛选、统计,分析出系统瓶颈。
数据筛选和统计
PHP大会笔记:聊聊稳定性保障那些事儿
会议 • zkbhj 发表了文章 • 0 个评论 • 1645 次浏览 • 2017-06-10 14:47
常见稳定性问题有哪些?
1、环境不一致问题
2、服务未隔离
3、服务化后,调用关系复杂,问题排查比较苦难
稳定性保障的原则
1、环境一致性原则(开发,测试,准生产,线上)
需要注意的因素,版本(PHP版本、服务器版本等),配置(无特殊化配置),路径(应用、日志等)
2、环境隔离原则
物理隔离:两个服务部署在两台机器上,尽量少多个服务部署在同一台机器上
服务隔离:A调用B服务,要有措施去处理,A方如超时(防止拖挂应用),熔断(类似于保险丝,当要调用的服务负载过高,不可用时,自动kill自己),B方则可以进行限流。
有效监控原则
监控项目有系统级和业务层面
1、系统:CPU、Disc、Memory、NetWork、Process……
2、业务:ErrorLog、Data Status……
监控策略
监控可用性
不只是监控服务是否存在,更重要的是监控服务是否可用
报警策略
不要让报警称为骚扰
1、不要让报警项设置的太敏感
2、不同级别不同的报警方式
3、报警内容要有意义,如所在机房、机柜、时间、问题描述等
充分预案原则
面向问题预案
1、想一想都会有哪些问题
2、所使用的任何服务都不可靠
3、服务不可用时,如何处理
预案策略
1、设定超市,避免过长等待
2、默认数据,服务不可用时使用
3、预案尽量平台化、自动化执行
冲分预案原则
预案验证
1、周期性验证
2、模拟服务不可用,封端口
3、查看服务表现是否符合预期
追根溯源原则
验证
恢复服务
常规操作:摘机、重启、回滚、降级
保留现场
目的是为了获取数据
系统内部数据,系统外部监控、保留运行状态
问题排查
数据+知识经验+工具 = 问题排查
常见的问题排查工具
案例
1、有一个PHP漏洞引起的环境性一致性问题
multipart/form-data 远程DOS漏洞
环境各种不一致:PHP版本、下线方式、配置文件、文件路径
改造流程:
RPM打包管理、服务器控制脚本(控制上下线方式) --》 公司yum源
为什么rpm? 打包方便、安装简便、解决依赖关系
最终Docker化,保障机器无状态
2、服务隔离的案例
PC、APP
3、其他隔离
读写分离、SQL分离、慢SQL隔离
如何设计服务调用链路分析系统?
链路可追踪
查看全部
1、环境不一致问题
2、服务未隔离
3、服务化后,调用关系复杂,问题排查比较苦难
稳定性保障的原则
1、环境一致性原则(开发,测试,准生产,线上)
需要注意的因素,版本(PHP版本、服务器版本等),配置(无特殊化配置),路径(应用、日志等)
2、环境隔离原则
物理隔离:两个服务部署在两台机器上,尽量少多个服务部署在同一台机器上
服务隔离:A调用B服务,要有措施去处理,A方如超时(防止拖挂应用),熔断(类似于保险丝,当要调用的服务负载过高,不可用时,自动kill自己),B方则可以进行限流。
有效监控原则
监控项目有系统级和业务层面
1、系统:CPU、Disc、Memory、NetWork、Process……
2、业务:ErrorLog、Data Status……
监控策略
监控可用性
不只是监控服务是否存在,更重要的是监控服务是否可用
报警策略
不要让报警称为骚扰
1、不要让报警项设置的太敏感
2、不同级别不同的报警方式
3、报警内容要有意义,如所在机房、机柜、时间、问题描述等
充分预案原则
面向问题预案
1、想一想都会有哪些问题
2、所使用的任何服务都不可靠
3、服务不可用时,如何处理
预案策略
1、设定超市,避免过长等待
2、默认数据,服务不可用时使用
3、预案尽量平台化、自动化执行
冲分预案原则
预案验证
1、周期性验证
2、模拟服务不可用,封端口
3、查看服务表现是否符合预期
追根溯源原则
验证
恢复服务
常规操作:摘机、重启、回滚、降级
保留现场
目的是为了获取数据
系统内部数据,系统外部监控、保留运行状态
问题排查
数据+知识经验+工具 = 问题排查
常见的问题排查工具
案例
1、有一个PHP漏洞引起的环境性一致性问题
multipart/form-data 远程DOS漏洞
环境各种不一致:PHP版本、下线方式、配置文件、文件路径
改造流程:
RPM打包管理、服务器控制脚本(控制上下线方式) --》 公司yum源
为什么rpm? 打包方便、安装简便、解决依赖关系
最终Docker化,保障机器无状态
2、服务隔离的案例
PC、APP
3、其他隔离
读写分离、SQL分离、慢SQL隔离
如何设计服务调用链路分析系统?
链路可追踪
查看全部
常见稳定性问题有哪些?
1、环境不一致问题
2、服务未隔离
3、服务化后,调用关系复杂,问题排查比较苦难
稳定性保障的原则
1、环境一致性原则(开发,测试,准生产,线上)
需要注意的因素,版本(PHP版本、服务器版本等),配置(无特殊化配置),路径(应用、日志等)
2、环境隔离原则
物理隔离:两个服务部署在两台机器上,尽量少多个服务部署在同一台机器上
服务隔离:A调用B服务,要有措施去处理,A方如超时(防止拖挂应用),熔断(类似于保险丝,当要调用的服务负载过高,不可用时,自动kill自己),B方则可以进行限流。
有效监控原则
监控项目有系统级和业务层面
1、系统:CPU、Disc、Memory、NetWork、Process……
2、业务:ErrorLog、Data Status……
监控策略
监控可用性
不只是监控服务是否存在,更重要的是监控服务是否可用
报警策略
不要让报警称为骚扰
1、不要让报警项设置的太敏感
2、不同级别不同的报警方式
3、报警内容要有意义,如所在机房、机柜、时间、问题描述等
充分预案原则
面向问题预案
1、想一想都会有哪些问题
2、所使用的任何服务都不可靠
3、服务不可用时,如何处理
预案策略
1、设定超市,避免过长等待
2、默认数据,服务不可用时使用
3、预案尽量平台化、自动化执行
冲分预案原则
预案验证
1、周期性验证
2、模拟服务不可用,封端口
3、查看服务表现是否符合预期
追根溯源原则
验证
恢复服务
常规操作:摘机、重启、回滚、降级
保留现场
目的是为了获取数据
系统内部数据,系统外部监控、保留运行状态
问题排查
数据+知识经验+工具 = 问题排查
常见的问题排查工具
案例
1、有一个PHP漏洞引起的环境性一致性问题
multipart/form-data 远程DOS漏洞
环境各种不一致:PHP版本、下线方式、配置文件、文件路径
改造流程:
RPM打包管理、服务器控制脚本(控制上下线方式) --》 公司yum源
为什么rpm? 打包方便、安装简便、解决依赖关系
最终Docker化,保障机器无状态
2、服务隔离的案例
PC、APP
3、其他隔离
读写分离、SQL分离、慢SQL隔离
如何设计服务调用链路分析系统?
链路可追踪
1、环境不一致问题
2、服务未隔离
3、服务化后,调用关系复杂,问题排查比较苦难
稳定性保障的原则
1、环境一致性原则(开发,测试,准生产,线上)
需要注意的因素,版本(PHP版本、服务器版本等),配置(无特殊化配置),路径(应用、日志等)
2、环境隔离原则
物理隔离:两个服务部署在两台机器上,尽量少多个服务部署在同一台机器上
服务隔离:A调用B服务,要有措施去处理,A方如超时(防止拖挂应用),熔断(类似于保险丝,当要调用的服务负载过高,不可用时,自动kill自己),B方则可以进行限流。
有效监控原则
监控项目有系统级和业务层面
1、系统:CPU、Disc、Memory、NetWork、Process……
2、业务:ErrorLog、Data Status……
监控策略
监控可用性
不只是监控服务是否存在,更重要的是监控服务是否可用
报警策略
不要让报警称为骚扰
1、不要让报警项设置的太敏感
2、不同级别不同的报警方式
3、报警内容要有意义,如所在机房、机柜、时间、问题描述等
充分预案原则
面向问题预案
1、想一想都会有哪些问题
2、所使用的任何服务都不可靠
3、服务不可用时,如何处理
预案策略
1、设定超市,避免过长等待
2、默认数据,服务不可用时使用
3、预案尽量平台化、自动化执行
冲分预案原则
预案验证
1、周期性验证
2、模拟服务不可用,封端口
3、查看服务表现是否符合预期
追根溯源原则
验证
恢复服务
常规操作:摘机、重启、回滚、降级
保留现场
目的是为了获取数据
系统内部数据,系统外部监控、保留运行状态
问题排查
数据+知识经验+工具 = 问题排查
常见的问题排查工具
案例
1、有一个PHP漏洞引起的环境性一致性问题
multipart/form-data 远程DOS漏洞
环境各种不一致:PHP版本、下线方式、配置文件、文件路径
改造流程:
RPM打包管理、服务器控制脚本(控制上下线方式) --》 公司yum源
为什么rpm? 打包方便、安装简便、解决依赖关系
最终Docker化,保障机器无状态
2、服务隔离的案例
PC、APP
3、其他隔离
读写分离、SQL分离、慢SQL隔离
如何设计服务调用链路分析系统?
链路可追踪
PHP大会笔记:PHP在机器学习上的应用和云深度学习平台的架构设计与实现
会议 • zkbhj 发表了文章 • 0 个评论 • 1843 次浏览 • 2017-06-10 14:03
咳咳,计算机课开始了……
机器学习
ML、DL引用
图像、语音、文本
如何实现?
什么是机器学习?
从数据中抽取规律,用于提取有用信息,解释数据、预测未来
机器学习过程:
数据预处理(去噪/归一化)
训练模型
评估模型(MSE/F1Score/AUC )
应用模型
机器学习算法的应用
神经网络
机器学习框架对神经网络的实现 -- TensorFlow
TensorFlow的编程模型 -- 数据流图
TensorFlow的架构
PHP-ML(终于到重点了)
就到这吧,,,,,结束! 查看全部
机器学习
ML、DL引用
图像、语音、文本
如何实现?
什么是机器学习?
从数据中抽取规律,用于提取有用信息,解释数据、预测未来
机器学习过程:
数据预处理(去噪/归一化)
训练模型
评估模型(MSE/F1Score/AUC )
应用模型
机器学习算法的应用
神经网络
机器学习框架对神经网络的实现 -- TensorFlow
TensorFlow的编程模型 -- 数据流图
TensorFlow的架构
PHP-ML(终于到重点了)
就到这吧,,,,,结束! 查看全部
PHP大会笔记:使用C++编写PHP7扩展
会议 • zkbhj 发表了文章 • 0 个评论 • 1570 次浏览 • 2017-06-10 10:17
【音频资源今晚放进来】
PHP的原生扩展
一、PHP的扩展加载过程
*.so (*.lib)
Zend引擎的php_load_extension函数
加载并执行so中get_module函数,返回zend_module_entry
struct中设置了M(R)INT\M(R)SHUTDOWN 4个函数指针
执行zend_s
PHP扩展加载
创建PHP的扩展工程
扩展骨架生成工具:ext_skel
编辑 config.m4
PHP和C++互补性强,实现动静结合
唯一与PHP直接在内存堆栈上实现互相调用的
PHP-X
不听了,,,去学怎么写PHP代码了。。
查看全部
PHP的原生扩展
一、PHP的扩展加载过程
*.so (*.lib)
Zend引擎的php_load_extension函数
加载并执行so中get_module函数,返回zend_module_entry
struct中设置了M(R)INT\M(R)SHUTDOWN 4个函数指针
执行zend_s
PHP扩展加载
创建PHP的扩展工程
扩展骨架生成工具:ext_skel
编辑 config.m4
PHP和C++互补性强,实现动静结合
唯一与PHP直接在内存堆栈上实现互相调用的
PHP-X
不听了,,,去学怎么写PHP代码了。。
查看全部
【音频资源今晚放进来】
PHP的原生扩展
一、PHP的扩展加载过程
*.so (*.lib)
Zend引擎的php_load_extension函数
加载并执行so中get_module函数,返回zend_module_entry
struct中设置了M(R)INT\M(R)SHUTDOWN 4个函数指针
执行zend_s
PHP扩展加载
创建PHP的扩展工程
扩展骨架生成工具:ext_skel
编辑 config.m4
PHP和C++互补性强,实现动静结合
唯一与PHP直接在内存堆栈上实现互相调用的
PHP-X
不听了,,,去学怎么写PHP代码了。。
PHP的原生扩展
一、PHP的扩展加载过程
*.so (*.lib)
Zend引擎的php_load_extension函数
加载并执行so中get_module函数,返回zend_module_entry
struct中设置了M(R)INT\M(R)SHUTDOWN 4个函数指针
执行zend_s
PHP扩展加载
创建PHP的扩展工程
扩展骨架生成工具:ext_skel
编辑 config.m4
PHP和C++互补性强,实现动静结合
唯一与PHP直接在内存堆栈上实现互相调用的
PHP-X
不听了,,,去学怎么写PHP代码了。。
PHP大会笔记:新浪微博LNMP架构分享
会议 • zkbhj 发表了文章 • 0 个评论 • 1694 次浏览 • 2017-06-10 09:42
【音频资源晚上放进来】
大会议题:高可用PHP。
一:新浪微博PC主站升级PHP7后的问题分析,新一代LNMP架构,基于混合云平台的弹性扩容架构
新浪微博内部技术体系:
后端语言,Java和PHP两大体系,开放平台用户关系和内容,是Java实现,所有业务需求开发用PHP。
模块并行化
突发大流量如何处理?改善架构,弹性扩容架构
分享大纲
背景和挑战
DCP平台介绍
PHP服务docker化
弹性扩容
1、背景和挑战
突发热点事件,引发大流量
大型活动及三节保障:春节红包飞
PUSH推送,运营的各种站内站外推送
话题业务特点
平时流量稳定,每日峰值波动较小
传统解决方案:提前申请足够的设备
设备冗余的问题,机架位不足,千万级采购成本,采购周期长,运行三个月只为一晚。
服务降级
降级非核心及周边业务
极端情况PC主站只保留主Feed
扩容繁琐,目标实现业务的弹性扩容部署
采购(采购机器)--》基础运维(操作系统、网络)--》业务运维(环境、监控、服务、流量)
运营设备成本高,目标要降低成本
各业务线利用率不高,未充分利用设备
各业务模型不同,峰值事件不同,不能进行错峰使用
每个业务都有自己的冗余,多个业务池会造成极大的成本
2、DCP平台介绍
主要思想:业务弹性调度、基础设施支持跨云
业务弹性调度:容器化来抹平运行环境的差异(借助docker)
基础设施支持跨云:
私有云(透明、安全、高性能)----- 按负载迁移(混合云)------公有云(敏捷、低成本、弹性)
固定工作负载 ,放在私有云----- 如根据预警,申请临时阿里云公有云,来进行弹性工作负载(按需申请使用和归还(无需闲置,成本低))
架构图
私有云“化零为整”
二、服务docker化
docker服务启动快
docker镜像一次制作,多次部署
尤其适合动态扩容部署
部署方案设计
PHP服务器包括Nginx、php-fpm、memcache、scribe等几大组件
PHP组件容器单独部署
代码、配置、日志等经常变更部分通过挂载的方式和docker容器互动
镜像制作
镜像方案
首次部署服务
通过下发配置文件、上线代码、启动容器完成服务部署。
代码上线
通过镜像完成上线
代码镜像使用busybox为基础,大小仅1m
创建代码镜像
一些细节
四、弹性扩容
扩容效果:一键式扩容
流量切换
总结
LNMP服务docker化,制作PHP服务先关镜像
结合DP平台完成PHP服务的首次部署、配置更改、代码上线 查看全部
大会议题:高可用PHP。
一:新浪微博PC主站升级PHP7后的问题分析,新一代LNMP架构,基于混合云平台的弹性扩容架构
新浪微博内部技术体系:
后端语言,Java和PHP两大体系,开放平台用户关系和内容,是Java实现,所有业务需求开发用PHP。
模块并行化
突发大流量如何处理?改善架构,弹性扩容架构
分享大纲
背景和挑战
DCP平台介绍
PHP服务docker化
弹性扩容
1、背景和挑战
突发热点事件,引发大流量
大型活动及三节保障:春节红包飞
PUSH推送,运营的各种站内站外推送
话题业务特点
平时流量稳定,每日峰值波动较小
传统解决方案:提前申请足够的设备
设备冗余的问题,机架位不足,千万级采购成本,采购周期长,运行三个月只为一晚。
服务降级
降级非核心及周边业务
极端情况PC主站只保留主Feed
扩容繁琐,目标实现业务的弹性扩容部署
采购(采购机器)--》基础运维(操作系统、网络)--》业务运维(环境、监控、服务、流量)
运营设备成本高,目标要降低成本
各业务线利用率不高,未充分利用设备
各业务模型不同,峰值事件不同,不能进行错峰使用
每个业务都有自己的冗余,多个业务池会造成极大的成本
2、DCP平台介绍
主要思想:业务弹性调度、基础设施支持跨云
业务弹性调度:容器化来抹平运行环境的差异(借助docker)
基础设施支持跨云:
私有云(透明、安全、高性能)----- 按负载迁移(混合云)------公有云(敏捷、低成本、弹性)
固定工作负载 ,放在私有云----- 如根据预警,申请临时阿里云公有云,来进行弹性工作负载(按需申请使用和归还(无需闲置,成本低))
架构图
私有云“化零为整”
二、服务docker化
docker服务启动快
docker镜像一次制作,多次部署
尤其适合动态扩容部署
部署方案设计
PHP服务器包括Nginx、php-fpm、memcache、scribe等几大组件
PHP组件容器单独部署
代码、配置、日志等经常变更部分通过挂载的方式和docker容器互动
镜像制作
镜像方案
首次部署服务
通过下发配置文件、上线代码、启动容器完成服务部署。
代码上线
通过镜像完成上线
代码镜像使用busybox为基础,大小仅1m
创建代码镜像
一些细节
四、弹性扩容
扩容效果:一键式扩容
流量切换
总结
LNMP服务docker化,制作PHP服务先关镜像
结合DP平台完成PHP服务的首次部署、配置更改、代码上线 查看全部
【音频资源晚上放进来】
大会议题:高可用PHP。
一:新浪微博PC主站升级PHP7后的问题分析,新一代LNMP架构,基于混合云平台的弹性扩容架构
新浪微博内部技术体系:
后端语言,Java和PHP两大体系,开放平台用户关系和内容,是Java实现,所有业务需求开发用PHP。
模块并行化
突发大流量如何处理?改善架构,弹性扩容架构
分享大纲
背景和挑战
DCP平台介绍
PHP服务docker化
弹性扩容
1、背景和挑战
突发热点事件,引发大流量
大型活动及三节保障:春节红包飞
PUSH推送,运营的各种站内站外推送
话题业务特点
平时流量稳定,每日峰值波动较小
传统解决方案:提前申请足够的设备
设备冗余的问题,机架位不足,千万级采购成本,采购周期长,运行三个月只为一晚。
服务降级
降级非核心及周边业务
极端情况PC主站只保留主Feed
扩容繁琐,目标实现业务的弹性扩容部署
采购(采购机器)--》基础运维(操作系统、网络)--》业务运维(环境、监控、服务、流量)
运营设备成本高,目标要降低成本
各业务线利用率不高,未充分利用设备
各业务模型不同,峰值事件不同,不能进行错峰使用
每个业务都有自己的冗余,多个业务池会造成极大的成本
2、DCP平台介绍
主要思想:业务弹性调度、基础设施支持跨云
业务弹性调度:容器化来抹平运行环境的差异(借助docker)
基础设施支持跨云:
私有云(透明、安全、高性能)----- 按负载迁移(混合云)------公有云(敏捷、低成本、弹性)
固定工作负载 ,放在私有云----- 如根据预警,申请临时阿里云公有云,来进行弹性工作负载(按需申请使用和归还(无需闲置,成本低))
架构图
私有云“化零为整”
二、服务docker化
docker服务启动快
docker镜像一次制作,多次部署
尤其适合动态扩容部署
部署方案设计
PHP服务器包括Nginx、php-fpm、memcache、scribe等几大组件
PHP组件容器单独部署
代码、配置、日志等经常变更部分通过挂载的方式和docker容器互动
镜像制作
镜像方案
首次部署服务
通过下发配置文件、上线代码、启动容器完成服务部署。
代码上线
通过镜像完成上线
代码镜像使用busybox为基础,大小仅1m
创建代码镜像
一些细节
四、弹性扩容
扩容效果:一键式扩容
流量切换
总结
LNMP服务docker化,制作PHP服务先关镜像
结合DP平台完成PHP服务的首次部署、配置更改、代码上线
大会议题:高可用PHP。
一:新浪微博PC主站升级PHP7后的问题分析,新一代LNMP架构,基于混合云平台的弹性扩容架构
新浪微博内部技术体系:
后端语言,Java和PHP两大体系,开放平台用户关系和内容,是Java实现,所有业务需求开发用PHP。
模块并行化
突发大流量如何处理?改善架构,弹性扩容架构
分享大纲
背景和挑战
DCP平台介绍
PHP服务docker化
弹性扩容
1、背景和挑战
突发热点事件,引发大流量
大型活动及三节保障:春节红包飞
PUSH推送,运营的各种站内站外推送
话题业务特点
平时流量稳定,每日峰值波动较小
传统解决方案:提前申请足够的设备
设备冗余的问题,机架位不足,千万级采购成本,采购周期长,运行三个月只为一晚。
服务降级
降级非核心及周边业务
极端情况PC主站只保留主Feed
扩容繁琐,目标实现业务的弹性扩容部署
采购(采购机器)--》基础运维(操作系统、网络)--》业务运维(环境、监控、服务、流量)
运营设备成本高,目标要降低成本
各业务线利用率不高,未充分利用设备
各业务模型不同,峰值事件不同,不能进行错峰使用
每个业务都有自己的冗余,多个业务池会造成极大的成本
2、DCP平台介绍
主要思想:业务弹性调度、基础设施支持跨云
业务弹性调度:容器化来抹平运行环境的差异(借助docker)
基础设施支持跨云:
私有云(透明、安全、高性能)----- 按负载迁移(混合云)------公有云(敏捷、低成本、弹性)
固定工作负载 ,放在私有云----- 如根据预警,申请临时阿里云公有云,来进行弹性工作负载(按需申请使用和归还(无需闲置,成本低))
架构图
私有云“化零为整”
二、服务docker化
docker服务启动快
docker镜像一次制作,多次部署
尤其适合动态扩容部署
部署方案设计
PHP服务器包括Nginx、php-fpm、memcache、scribe等几大组件
PHP组件容器单独部署
代码、配置、日志等经常变更部分通过挂载的方式和docker容器互动
镜像制作
镜像方案
首次部署服务
通过下发配置文件、上线代码、启动容器完成服务部署。
代码上线
通过镜像完成上线
代码镜像使用busybox为基础,大小仅1m
创建代码镜像
一些细节
四、弹性扩容
扩容效果:一键式扩容
流量切换
总结
LNMP服务docker化,制作PHP服务先关镜像
结合DP平台完成PHP服务的首次部署、配置更改、代码上线