MySQL问题 - COMPLETE服务器溢出!请指教

时间:2011-06-24 10:41:59

标签: php mysql optimization query-optimization mysql-management

这是我在这里的第一个问题所以请不要对我这么强硬......:P
我通常倾向于谷歌我的方式解决方案,但现在我赶时间,已经用尽了我所拥有的所有资源......

因为我的网站是商业网站,所以继续支付某人帮助我是公平的但是......我自己有一些财务问题,这是我专用服务器的第3个月付款,仍然是自从我的网站真正上线以来的第一个月...我已经完成了所有这一切,因为我买不起任何人,并且没有广告,因为我认为我现在不会得到任何东西而且广告只会没用...虽然我打算在我网站的生活中使用广告,但我没有从(至少对我的预算)昂贵的服务器租金中获得一分钱...... :(

这是我的问题: 我有一个专用的服务器,直到几天前我的流量开始上升...好几天,我一直从我的服务器收到来自我的CPU状态监视器的电子邮件... 它就像是全力以赴,我试图找出原因并修复问题!...

我非常绝望所以请帮助我!

这是我最新的统计数据(尽管他们已经这样了4天......) 08:02:35 up 12 days, 14:39, 0 users, load average: 25.82, 25.98, 25.92

我使用统计计数器,我认为它们非常准确(代码在每个页面上,所以这些是我网站的全局结果)... 我的统计数据是:

Page Loads  Unique Visits   
10,367              1,843   

我的主要页面是index.phpvideos.php(我运行视频网站顺便说一句)

索引和videos.php页面总是使用大约140-150-160%的cpu 我的意思是吧? 他们使用超过100%?喜欢借钱还是什么?

他们都做的是:
(主要是视频页面,索引只是它的简化版本)

检查 - 并且如果通过了 - 查询和页码 查询数据库,从表中获取结果并显示它们

我将mysql_connect用于从mysql中获取的所有内容。 我听说mysql中的永久连接是大量查询的可能解决方案,但也读到了安全问题导致的这种方法的很多缺点...... 请指教?

我的数据库是myisam engined
我有2个主要表格:游戏和视频 沿着它们大约有5-6000个用于存储注释的表...

 games table:    9   columns    
 id - primary   
 name - fulltext - used by my search    

 videos table:    17 columns    
 indexes:   
 id-primary     
 title,tags-fulltext-used by search     

其余表用于注释,但除了id字段之外没有任何索引。 他们只保留评论和日期。 当我加载搜索页面时,所有数据都来自db: 搜索关键字,获取最相关,然后回显与匹配项目相关的所有数据。 打开视频页面时,某个数据库中的所有注释都会被加载并显示在一个框中。

我可以做些什么来降低处理能力?

另外,我的支持团队只是通过电子邮件发送给我:

  

我们已经将表缓存增加到了12000,现在请检查它是怎么回事。而且最好还是得到一个最适合你工作环境的my.cnf文件,这里将mysql变量设置为默认值价值观。

我刚刚在谷歌上阅读了有关my.cnf文件的内容,但与我的案例无关...... 有人可以告诉我我的my.cnf文件应包含哪些内容?与我的想法有关吗?

我在这里有我的服务器信息,但它需要一些空间...我怎么能以某种方式关闭它而你只有在你想读的时候打开?没有使用链接?

我应该像这样张贴在这里吗? 如果主持人读到这个并且可能以某种方式崩溃,请这样做!

Server Information:
-------------------------------------------------------

Processor Information
Total processors: 6

Processor #1

Vendor
    AuthenticAMD

Name
    AMD Phenom(tm) II X6 1055T Processor

Speed
    2800.000 MHz

Cache
    512 KB

Processor #2

Vendor
    AuthenticAMD

Name
    AMD Phenom(tm) II X6 1055T Processor

Speed
    2800.000 MHz

Cache
    512 KB

Processor #3

Vendor
    AuthenticAMD

Name
    AMD Phenom(tm) II X6 1055T Processor

Speed
    2800.000 MHz

Cache
    512 KB

Processor #4

Vendor
    AuthenticAMD

Name
    AMD Phenom(tm) II X6 1055T Processor

Speed
    2800.000 MHz

Cache
    512 KB

Processor #5

Vendor
    AuthenticAMD

Name
    AMD Phenom(tm) II X6 1055T Processor

Speed
    2800.000 MHz

Cache
    512 KB

Processor #6

Vendor
    AuthenticAMD

Name
    AMD Phenom(tm) II X6 1055T Processor

Speed
    2800.000 MHz

Cache
    512 KB


Memory Information

Memory for crash kernel (0x0 to 0x0) notwithin permissible range
Memory: 7917400k/8912896k available (2575k kernel code, 208164k reserved, 1304k data, 212k init)



System Information

Linux nrgysrv1.hostrprv1.com 2.6.18-194.32.1.el5 #1 SMP Wed Jan 5 17:52:25 EST 2011 x86_64 x86_64 x86_64 GNU/Linux


Physical Disks

SCSI device sda: 2930277168 512-byte hdwr sectors (1500302 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: drive cache: write back
SCSI device sda: 2930277168 512-byte hdwr sectors (1500302 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: drive cache: write back
sd 0:0:0:0: Attached scsi disk sda
SCSI device sdb: 2930277168 512-byte hdwr sectors (1500302 MB)
sdb: Write Protect is off
sdb: Mode Sense: 00 3a 00 00
SCSI device sdb: drive cache: write back
SCSI device sdb: 2930277168 512-byte hdwr sectors (1500302 MB)
sdb: Write Protect is off
sdb: Mode Sense: 00 3a 00 00
SCSI device sdb: drive cache: write back
sd 3:0:0:0: Attached scsi disk sdb
sd 0:0:0:0: Attached scsi generic sg0 type 0
sd 3:0:0:0: Attached scsi generic sg1 type 0



Current Memory Usage

             total       used       free     shared    buffers     cached
Mem:       7920256    7873744      46512          0      61148    6980096
-/+ buffers/cache:     832500    7087756
Swap:      4192956        184    4192772
Total:    12113212    7873928    4239284


Current Disk Usage

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3             1.4T  636G  645G  50% /
/dev/sda1              99M   18M   77M  19% /boot
tmpfs                 3.8G     0  3.8G   0% /dev/shm
/dev/sdb1             1.4T  291G 1016G  23% /backup
/usr/tmpDSK           485M   11M  449M   3% /tmp


----------------------------------------------------

我认为这是我的所有信息。

如果你怜悯我,请帮助!... 感谢一百万次!热点

3 个答案:

答案 0 :(得分:4)

  

索引和videos.php页面总是使用大约140-150-160%的cpu我的意思是吧?他们使用超过100%?喜欢借钱还是什么?

不,负载表示为每个CPU一个单元,因此如果您的服务器有四个CPU,则负载为1.00(或100%)意味着一个CPU处于满负载状态,另外三个处于空闲状态(或者两个是在50%负载和其他两个0%或任何类似组合)和4.00(或400%)的负载意味着所有CPU都满负荷。

  

我使用mysql_connect获取从mysql获取的所有内容。我听说mysql中的永久连接是大量查询的可能解决方案,但也读到了安全问题引起的这种方法的很多缺点......请指教一下?

为什么它应该是安全问题?如果误用,它可能是性能问题,但绝对不是安全问题。

从你写的内容来看,你似乎对关系数据库和网络开发都是一个新手,我建议的第一步是购买一本数据库书籍,了解它们是如何工作的以及如何使用它们,然后是好的关于PHP的书。否则,您将programming by coincidence,永远不会解决您的问题。

顺便说一下,如果你是新手(而且你知道的话),你应该阅读the FAQsHow to askEditing help

答案 1 :(得分:3)

首先,隔离问题。如果问题的根本原因在于您的PHP代码,那么调整MySQL是没有意义的。

您的支持称他们“将表缓存增加到12000”,因此他们可能将table_open_cache的值从400(默认)增加到12000.(您可能不应该有6000个表。重新考虑该设计。)

对于MySQL,请研究MySQL文档的这些部分。

Tuning Server Parameters

  

调整MySQL服务器时,两者   要配置的最重要的变量   是key_buffer_size和   table_open_cache。你应该先   有信心你有这些设置   在尝试改变之前适当   任何其他变量。

Preconfigured Option Files

  

MySQL提供了许多   可以预先配置的选项文件   用作调整MySQL的基础   服务器。寻找诸如此类的文件   my-small.cnf,my-medium.cnf,   my-large.cnf和my-huge.cnf,其中   是小的样本选项文件,   中型,大型和超大型系统。

Server System Variables

Server Status Variables

您还应该有一个本地或远程系统进行测试。

答案 2 :(得分:1)

我认为问题是每个视频都有一个单独的表格。所有评论(或其他)都应该存储在SAME表格中,并附上video_id或类似内容,以便将它们链接回相关视频。