《nginx下Fastcgi解决挂起卡死》和《webbench对nginx进行压力测试》两篇文章中提到智力网站晒晒IQ网经常出现服务器挂起的情况。将服务器切换到apache,问题还是依旧。服务器使用的双核CPU,lovelucy发现其中一个CPU一直保持在100%,重启MYSQL后,情况稍好,但过了一会儿一个CPU又保持在100%。登录到mysql
/usr/local/mysql/bin/mysql -u用户名 -p密码
show processlist;
《nginx下Fastcgi解决挂起卡死》和《webbench对nginx进行压力测试》两篇文章中提到智力网站晒晒IQ网经常出现服务器挂起的情况。将服务器切换到apache,问题还是依旧。服务器使用的双核CPU,lovelucy发现其中一个CPU一直保持在100%,重启MYSQL后,情况稍好,但过了一会儿一个CPU又保持在100%。登录到mysql
/usr/local/mysql/bin/mysql -u用户名 -p密码
show processlist;

晒晒IQ网博客原本使用apache,最近改为了nginx。使用了一段时间发现,有部分附件无法上传。主要状况是图片全部都可以上传,但是部分FLASH文件却无法上传。出现http 错误,如图。
Read more
在《nginx下Fastcgi解决挂起卡死》提到的问题并没有完全解决。在流量不断增加的情况下,不想增加服务器配置的话只能做更多的优化。为了选择nginx合适的子进程数,对智力网站晒晒IQ网进行了压力测试。没有用ab,而是选择用webbench。
1、适用系统:Linux
2、编译安装:
1. wget http://www.sfr-fresh.com/unix/privat/webbench-1.5.tar.gz
2. tar zxvf webbench-1.5.tar.gz
3. cd webbench-1.5
4. make && make install
3、使用:
1. webbench -c 3000 -t 30 http://www.33iq.com
参数说明:-c表示并发数,-t表示持续时间(秒)
我使用了webbench -c 300 -t 10 http://www.33iq.com 分别在子进程数为20 、25、30、35、40、50的情况下进行了测试。测试结果如下:
根据数据最终选择了35。但结果不到10分钟fast-cgi又挂起了。后来想了想,最后把keepalivetime的时间下调到5秒(原来为30).减少服务器同一时间的连接数。目前暂时稳定。
还是智力网站晒晒IQ网,使用的是万网云主机。配置是nginx+Fastcgi+mysql,问题情况是网站有时会莫名其妙出现2-3分钟卡死,页面空白在刷新,有时一直卡着,有时会报502错误,网站可以PING得通,内存、CPU都显示正常。网上找了下,感觉可能是因为Fastcgi挂起卡死了。找了些相关资料,修改了相关配置,具体如下。
调大缓存区
fastcgi_buffer_size 128k;
fastcgi_buffers 8 128k;
如果你使用的是nginx的负载均衡Proxying,调整
proxy_buffer_size
proxy_buffers
调大子进程数
max_children 20 (可以调更大 我原来只设置了8。。)
调整之后目前还没有发现相关问题。
参考文档:
3、[php-fpm自动拉起]从nginx的502错误出发谈锁机制在服务器自动监控脚本中的应用
MYSQL数据库里有一个表,有三个字段,id、type(课程名)、number(学号),课程名假设有三种,语文、数学、英语,学生有50名,每名学生可以任意选择课程(可都不选,也可都选),现在要列出选择全部课程学生的名单。
好吧,这看上去不像是个很难的问题,教科书中都应该有答案,来个否定之后的否定,not exist,结局是MYSQL经过40多秒后返回了正确答案。
看来这不是一个好方法,试了下group by,将选择三门课程的学生列出来。的确快了很多,但是再多出几个字段后,速度就慢了很多。
select * from jishuzhibiao where number in (select * from jishuzhibiao group by number, date, signal, frequency having count(distinct type)=3) and date in (select * from jishuzhibiao group by number, date, signal, frequency having count(distinct type)=3) and frequency in (select * from jishuzhibiao group by number, date, signal, frequency having count(distinct type)=3) and signal in (select * from jishuzhibiao group by number, date, signal, frequency having count(distinct type)=3)
(分别对number, date, signal, frequency进行分组,运行速度再次超过40秒)
最后通过创建视图还是解决了这个问题,
创建视图:create view st(number, date, signal, frequency) as select * from jishuzhibiao group by number, date, signal, frequency having count(distict type)=3
查询:select * from jishuzhibiao, st where jishuzhibiao.number=st.number and jishuzhibiao.date=st.date and jishuzhibiao.signal=st.signal and jishuzhibiao.frequency=st.frequency
先介绍下本人在Godaddy上买的空间,无限空间+无限流量+Linux。
一开始网上搜索了很多godaddy开启GZIP压缩的方法,但是在漫长等待php配置文件生效之后,发现貌似不太管用。
后来发现godaddy可以直接使用php的内置压缩函数,具体方法如下:
页面顶部加入代码:if(Extension_Loaded('zlib')) Ob_Start('ob_gzhandler');
页面底部加入代码:if(Extension_Loaded('zlib')) Ob_End_Flush();
测试了下很完美,压缩了超过70%
测试地址:http://tool.chinaz.com/Gzips/Default.aspx
此外CSS、JPG、JS等非PHP文件可以通过静态文本调用PHP压缩模块实现GZIP压缩效果,具体实现方法:http://zhiqiang.org/blog/it/speedup-blog-gzip-javascript-css.html
评价浏览器主要指标是速度和安全性。IE的浏览器的安全性一直被人诟病,其实不是因为IE的安全性有多差,而是研究IE的用户数大,所以研究的人也多了。
这里主要比较的浏览器的速度,先介绍下一些基本概念,浏览器获取页面显示请求页面的HTML代码,然后分析HTML代码,获取页面的组件(CSS文件、JS文件、图片等)。当然无论获取HTML代码还是组件都可能需要进行DNS解析。
其次这些组件一般都是顺序下载的,比如一个CSS文件100KB,一个JS文件1KB,浏览器往往需要下载完CSS文件,再下载JS文件(前提是CSS文件出现在JS文件前),这样网页显示会很慢会一直等待那个100K的CSS文件下载完。当然目前浏览器都支持并发,这样就可以同时下载CSS文件和JS文件,在http1.1的协议中,IE5/6/7、firefox2最多支持2个并发数,IE8、firefox2最多支持6个并发数,opera和safari最多支持8个并发数,chrome最多支持4个并发数。
也许你会觉得并发数对于浏览器浏览网页的速度提高不是很明显,我们可以通过实际测试来说明问题,使用在线浏览器并发测试工具,地址:http://site-perf.com/
以http://www.sroan.com为例,分别使用2个并发数和6个并发数进行测试,结果如下:
2个并发数
6个并发数
通过对比可发现在相同条件下,6个并发数的浏览器比2个并发数的浏览器快了3.5秒,其中等待时间从71%下降到26%,这也是并发数度的好处(既在下载100K的CSS文件也同时可以下载1K的JS文件。)
当然这只是最肤浅得分析,如果要研究网站的性能就尽量使等待时间下降到0,通常合并JS、CSS等文件(同样100MB的1个文件进行复制速度肯定比100个1MB要快,因为IO读取写入耗时比传输大),同样网站为了负载均衡,将不同的文件放置于不同的域名机器下,这样导致了解析域名时间加长,反而影响加载速度。
最后引用一条等式:
全球IE用户×IE用户平均智商=全球chrome用户数×他们的平均智商+全球firefox用户数×他们的平均智商
你希望自己是在等号左边,还是在右边?
附chrome下载地:http://www.google.com/chrome