| Twitter | Del.icio.us | Comments (18) | | Edit

Comments Powered by Disqus

留言评论 | Comments (18)

没被null route的ddos都不叫ddos,被d过2次的人非常郁闷的飘过

想请教一下,如果遇到php进程经常性占到 100% cpu,如何借助一些方法或者工具,判断问题究竟出在哪里呢(用的是官方版的Wordpress,姑且认为程序没问题吧)

嗯,要学习的是其优化思路。简约而不简单!

其中编译 PHP 是很重要的一个部分,禁用所有不需要的扩展。我有个 VPS 的就是把 PHP 的执行程序压缩到了 3M 多一点(记得 strip php)

另外尽量用 nginx 只开2个 worker 进程就绝对够了。

对于 php-fpm 的php重启次数尽量设置低一些,如:100次就重启。否则 php 的持久运行会消耗很多内存(并且很多是没用的)

MySQL 部分则系统优化谈不上了,重点是索引的KEY大小,CHAR 索引比 BYTE 索引大多了(但这得改业务程序)

关于网络参数控制这部分,我在网上看到有人提到修改net.ipv4.tcp_fin_timeout改变系统默认的超时时间,请问这有必要吗?

网络设置部分有问题。
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
这两个不能同时用。防火墙|nat|load balancer的情况下,可能会导致服务器错误的处理包请求。比如说建立一个tcp连接可能会花10s。
ulimit设置部分不一定适合全部的系统,比如debian默认的ssh pam配置中已经有了pam_limits.so。这样只要重新登录,就可以将/etc/security/limits.conf的改动生效。按照你的改法,没有必要再加ulimit -SHn 40960了。如果你的程序都是脚本启动的,脚本都是root跑的,然后用daemon切换到一般用户的,那么可以在脚本中加入ulimit设置,这样可以避免修改全局的limits.conf。

我们最后发现IO是瓶颈,可能是因为KVM。vmstat和sar一起调试最后发现磁盘IO和网络跟不上,导致一直在等。换用Solaris Zone后解决。所以自己的服务器也有必要研究一下。很多时候是%sys很高……

net.ipv4.tcp_syncookies = 1
值得商榷。在压力不大时,syncookies没有必要吧

我们的app目前遇到了SQL效率的瓶颈,想请教个MySQL高手,预算3k,大概要花一个下午。

请问Fenng兄有没有人推荐呢?

请问怎样的预算比较靠谱呢?我理解问题和问题差异比较大,按小时是OK的,每小时500?1000?

另外这样的人如何才能找到呢?

多谢哈!

好实在的技术,大辉blog上好久没见到这样的文章了,学习了。

经过尝试,ulimit设置这一部分在Ubuntu 10.04.3 LTS下无效(不是VPS,真实服务器上)。以前也碰到过这问题,尝试过各种方法设置全局ulimit,但都没有成功。后来看到国外一篇帖子说是Ubuntu的一个bug,原帖地址忘了。。。

按照这篇文章进行了一些优化,服务器性能好多了,还找到了一个MySQL瓶颈。省了不少钱。

多谢!

vps上能优化的还真不多。更需要限制一下内存使用。比如fpm的进程数,去掉php不需要的模块,调好mysql的缓存。

至于ulimits这些,估计到不了那个并发量就不行了。

你好,经常看贵博客。现在非常流行的linux+apache+nginx+php+mysql搭建web服务器不知道博主是否有接触,网上很多自动安装的脚本,但是我在linode vps上没有一个完美运行的,不是这样就是那样的问题。不知道博主能否写篇相关的文章。s135的文章貌似只针对centos 5,在6下很多问题。。。。