Archive for November, 2008

新版QQ 2009 Preview3的小Bug

Wednesday, November 26th, 2008

2008版的QQ在与网友视频的时候,经常莫名的掉线,或者干脆就连不上,下载了新版的QQ2009Preview3,新功能就不说了,发现几点小问题:
A,界面非常华丽,有点过了,艳丽的底色,增加了对正常QQ界面上的字符的识别难度。
B,多个QQ同时登录的时候,偶尔会有几个QQ无法突然断线,无法登录,必要得把全部QQ关闭,再重新一个个登录才行。
C,QQ面板隐藏功能有点问题,在以往的版本中,QQ面板隐藏到了最顶部的时候,会有一小条边框露出,这样也不会占用屏幕空间,也很容易的发现QQ面板现在的位置,以便鼠标触及的时候展开QQ面板,但在QQ2009Preview3中,这条小边框根本就看不见了,经常要用鼠标在屏幕顶部整个区域寻找一番才能触及展开,这个很不方便。
D,QQ2009Preview3版本的,QQ再次登录的时候,某一号码最后一次关闭的时候的位置丢失,无法记录,这样又得重新拖动不同的QQ到不同的位置(对于同时使用多个QQ用户来说很不方便),而且还经常有找不到QQ面板的情况发生,必要得双击鼠标托盘来展开QQ面板,郁闷之极。
今天下载了QQ2009Preview4,重新安装了,发现上述问题均已经解决,赞一个!

减少MySQL的Sleep进程有效方法

Monday, November 17th, 2008

经常遇到很多朋友问到,他的MySQL中有很多Sleep进程,严重占用MySQL的资源,现在分析一下出现这种现象的原因和解决办法:
1,通常来说,MySQL出现大量Sleep进程是因为采用的PHP的MySQL长链接数据库方式,即使用了mysql_pconnect来打开链接数据库,解决办法就是使用“短”链接,即mysql_connect函数。
2,在使用mysql_connect短链接方式打开数据库,每个页面在打开数据库后,执行SQL完成,当页面脚本结束的时候,这个MySQL连接会自动关闭并且释放内存。但仍然出现大量Sleep进程,可以看看网站是否存在以下几个方面的问题。
A,硬盘上存在大量的静态文件,或者WEB服务器负荷太重,在处理HTTP请求响应变得太慢,这样也有可能导致出现大量Sleep进程,解决方法适当调整WEB服务参数和文件,一味的静态或者缓存化网页内容并不是灵丹妙药。
B,在网页脚本中,有些计算和应用可能非常耗时,比如在0秒的时候打开数据库执行完一段SQL代码后,网页脚本随即花了20秒钟进行一段复杂的运算,或者是require了一个庞大的PHP文件(比如含有几千个违规关键字的过滤函数),哪么这个时候在MySQL后台看到的进程中,这个20秒的过程MySQL并没有做任何事情了,一直处于Sleep状态,直到这个页面执行完毕或者达到wait_timeout值(被强行关闭),优化网页脚本,尽量让程序快速运行,或者在执行这段耗时的运行过程中,执行mysql_close把当前MySQL链接强行关闭。
C,在采集站中,MySQL中大量的Sleep进程这类现象尤其明显(比如很多网友问道DeDeCMS的MySQL中出现大量Sleep),因为大部的采集器页面在运行过程中,事先打开了一个MySQL链接(可能是为了验证用户权限等),然后开始使用file_get_contents之类的操作去获取一个远程的网页内容,如果这个远程的站点访问速度太慢,比如花了10秒时间才把网页取回,哪么当前采集脚本程序就一直阻塞在这里,并且MySQL啥事也没干,一直处于Sleep状态。解决方法同上,在发出file_get_contents采集远程网页的时候,使用mysql_close强行关闭MySQL的连接,等采集完成在适当需要的时候再重新mysql_connect即可。
总的说来,MySQL是一个非常高效快速的数据库,要让他发挥到最大的性能,同时也不要过量的去掘取他的优势所在,适当的分表(超过10G的表,在打开和关闭以前更新的时候效率明显下降很多),尽可能的优化SQL都可以做到事半功倍的。