LNMP优化及问题总结

  • nginx错误日志中报出:php fastcgi 连接超时,查看nginx和php-fpm的timeout值没有问题
报错信息(nginx错误日志) : 2012/06/03 11:24:02 [error] 920#0: *6197285 upstream timed out (110: Connection timed out) while reading response header from upstream, client:       220.255.1.90, server: localhost, request: "POST /api/api.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "50.XX.XX.XX", referrer: "app:/XXX.swf"
解决方案 : 通过增加php-fpm子进程提高php处理能力,pm.max_children值从50升到100,同进增加pm.start_servers,pm.min_spare_servers,pm.max_spare_servers的值
  • production服务器推荐错误处理等级

建议使用error_reporting = E_ALL & ~E_DEPRECATED,日志中记录notice,方便查错,比如memcached连接问题等很多关键性错误为notice级别

  • 上线游戏后,要将所有的notice问题解决掉,并监控nginx日志
目的 : 保证游戏没有任何错误信息出现,出现错误信息及时处理
方案 : 首先,游戏上线后,一定做的一步操作就是监控错误日志,处理任何错误信息;定时脚本,发现错误日志有内容,发送邮件,监控错误日志
  • nginx错误日志中报出:php fastcgi 连接超时,查看nginx和php-fpm的timeout值没有问题,通过增加max_children仍不能解决问题
原因分析 : 查看服务器load_average,结果发现负载过大。继续分析程序,发现程序里由php读文件并通过流传输给前端图片。
解决方案 : php不到万不得已不采取流的方式传输图片给客户端,由nginx直接将图片传给客户端;查看nginx是否keep_alive长连接,如果是停掉keep_alive功能,可以减轻负载,并发量太大的情况也需要关掉keep_alive功能
解决后又出现新问题 : 服务器负载降下来,但仍出现连接超时导致php-fpm堵塞现象
解决方案 : 打开php-fpm慢日志,request_slowlog_timeout = 30s(php-fpm模式下max_execution_time无效),slowlog = /usr/local/webserver/php/var/log/php-fpm.log.slow
                   限制php-fpm最长执行时间,request_terminate_timeout = 30s
                   记录load average日志,每分钟读取一次服务器load average并记录到日志文件
通过日志监控发现问题 : php-fpm慢日志,不会记录慢脚本执行全过程,只会记录php-fpm认为导致整个脚本慢的执行步骤;
                   php脚本执行时间超过10秒(不同服务器可能不一样)会导致CPU使用率过高,所以php不适合长请求的处理,只适合短请求处理
解决方案 : 避免长处理,如果有长处理,使用其它解决方案
  • nginx, php-fpm status监控
问题 : php-fpm经常down掉,暂找不到问题
临时解决方案 : 找开nginx status和php-fpm status/ping/pong,通过人工监控高峰期状态;编写脚本,通过status监控发现问题并重启php-fpm
新问题 : 当php-fpm堵塞时,php-fpm ping仍能正常返回值,所以脚本不会重启php-fpm
解决方案 : 写一个测试php文件,通过监控此文件是否能正常反问来重启php-fpm
  • yum报错
问题 : centos5.5执行yum命令报错,primary.sqlite.bz2: Metadata file does not match checksum
解决 : cd /var/cache/yum/addons
           sudo yum clean all
           sudo yum makecache
           sha1sum primary.sqlite.bz2
           更改primary_db值为sha1sum结果<checksum type="sha">0e039f885793bddf6c3bf9821a51ff0983fffb76</checksum>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值