mysql 147线程,apache 840线程,内存8G,这是怎么回事; 
ps aux | grep "mysql" -c 
147 ps aux | grep "httpd" -c 
820 
Linux PM 2.6.9-42.ELsmp #1 SMP Sat Aug 12 09:39:11 CDT 2006 i686 i686 i386 GNU/Linux 
php 5.0.5 
mysql 4.0.5 stand 用户在线400; mysql用得是一个类,有 
function __destruct(){ 
@mysql_close($this->linkHandle); } 
; 求教啊,后天再加份,谢谢啦! 
不知道static能不能发挥作用?

解决方案 »

  1.   

    msqyl的关闭处理不要放在__destruct()里面,
    __destruct()只有在实现被放弃的时候才会执行,如果这个实现一直被调用那么它就不会被放弃,
    也就是说__destruct()永远都不会被执行。
      

  2.   

    UP
    那么多HTTPD线程,你的连接是设置成一直保持着么?
      

  3.   

    3楼说的很正确,在你的DB类里新加一个close数据库连接函数吧
      

  4.   

    msqyl的关闭处理不要放在__destruct()里面, 
    __destruct()只有在实现被放弃的时候才会执行,如果这个实现一直被调用那么它就不会被放弃, 
    也就是说__destruct()永远都不会被执行。
    不明白,难道php执行完成是不算是放弃么?
      

  5.   

    mysql 里用下 show full processlist; 看是不是sql语句写的有问题造成拥堵
      

  6.   

    还有看慢查询日志,看是不是有很慢的sql导致的
      

  7.   

    看看你的类连接mysql是不是用了长连接。apache 800个线程我觉得挺正常的。
      

  8.   

    登录就为了回这贴很正常的情况但又优化的余地
    PHP执行结束后会释放所有的资源function __destruct(){ 
    @mysql_close($this->linkHandle); }
    析构函数只有释放的时候才会被执行 如果用了模板之类的东西 应该进行模板解析之前释放DB 这样应该能降低MYSQL负载简单的一句话 程序不只是完成功能还要优化 几乎所有的程序都存在优化的空间