可锐资源网

技术资源分享平台,提供编程学习、网站建设、脚本开发教程

PHP跑不动?服务器慢成蜗牛,客户投诉不断.


最近公司电商系统总卡,用户下单页面半天打不开,客服电话快被打爆。技术主管说PHP性能不行,我们几个新来的程序员被拉来紧急开会。老王翻出一本破旧的《高性能PHP开发》说:"这本书早该读了"。于是边学边试,折腾了半个月总算有点头绪了。

首先得知道哪里卡。用个叫ab的工具测了下,发现并发200就扛不住。再拿Siege跑压力测试,图像显示数据库那边CPU飙升。原来首页产品列表页每次都要反复查价格表,改成批量查询后响应时间直接砍半。

代码里有很多低级错误。比如有个页面循环里嵌套了数据库查询,改造成批量取数后效率高多了。还有些地方用了require_once,换成require省点内存。发现echo用逗号比点符号快,虽然是小地方,积少成多也能省点时间。

数据库那边更离谱。有个库存更新的SQL用了全表扫描居然没人管。加几个联合索引后查询快了十几倍。把MyISAM换成InnoDB虽然一开始搞坏两个表,但后来事务处理安稳多了。现在还用Redis做缓存,热门商品数据直接塞到内存里,数据库总算消停点。

服务器配置也调了无数遍。nginx替换了apache后并发量直接翻倍。OPcache参数纠结了好久,最后把内存给足了才有效。最烦的是晚上加班改my.ini,innodb_buffer_pool_size这个参数调了七回才稳定。

前端那边也不能偷懒。原来网页文件都没压缩,图片动不动几兆。用了Gzip压缩后页面体积小一半。把CSS和JS文件合并,首页加载时间从8秒降到2秒多。用户现在抱怨明显少了,页面打开也不像之前那么卡。

运维老张教我们装监控工具,现在能随时看到服务器负载曲线。有次半夜数据库连接数暴增,警报响起赶紧扩缓存才没崩。服务器机房那边加了台备用机,虽然还没用上,心里踏实多了。

项目组趁热打铁又做了件大事,把核心模块服务化部署。支付和订单分开走以后,主站压力轻了不少。现在运维群里安静多了,偶尔蹦出的错误都能及时抓到。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言