我的CentOS服务器有问题。 不时,页面打开方式太慢,最终通常会导致mysqld停止运行。 我知道这是不足够的信息,我不知道什么是相关的,什么是不相关的,所以请,有人可以告诉我什么信息,我需要提供更好的理解这个问题?
以下是顶部命令的输出:
Tasks: 175 total, 3 running, 172 sleeping, 0 stopped, 0 zombie Cpu(s): 60.5%us, 28.9%sy, 0.0%ni, 0.0%id, 7.6%wa, 0.2%hi, 2.8%si, 0.0%st Mem: 3985660k total, 2095932k used, 1889728k free, 52048k buffers Swap: 6225912k total, 4632k used, 6221280k free, 545296k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 4076 mysql 20 0 159m 36m 4540 S 121.4 0.9 108:49.64 mysqld 12694 apache 20 0 53636 21m 6492 S 7.3 0.5 0:00.77 httpd 12519 apache 20 0 54688 22m 6784 S 7.0 0.6 0:02.33 httpd 12575 apache 20 0 54688 23m 6796 S 5.3 0.6 0:01.80 httpd 11986 apache 20 0 68000 37m 6816 S 5.0 1.0 0:04.70 httpd 12595 apache 20 0 53636 21m 6636 S 4.0 0.6 0:00.95 httpd 11564 apache 20 0 62884 32m 6812 R 3.3 0.8 0:09.09 httpd 12690 apache 20 0 52628 20m 6424 S 3.3 0.5 0:00.22 httpd 12212 apache 20 0 59812 26m 6800 S 3.0 0.7 0:02.69 httpd 12536 apache 20 0 58788 24m 6716 S 3.0 0.6 0:01.64 httpd 11995 apache 20 0 92580 58m 6780 S 2.7 1.5 0:05.50 httpd 12069 apache 20 0 73124 42m 6812 S 2.7 1.1 0:06.60 httpd 11587 apache 20 0 62884 31m 6816 S 2.3 0.8 0:12.11 httpd 11971 apache 20 0 65952 35m 6816 S 2.0 0.9 0:04.60 httpd 12236 apache 20 0 57760 25m 6808 S 2.0 0.6 0:05.85 httpd 12539 apache 20 0 53636 21m 6664 S 2.0 0.6 0:01.59 httpd 12520 apache 20 0 59812 26m 6796 S 1.3 0.7 0:02.43 httpd 12686 apache 20 0 54688 23m 6776 S 1.3 0.6 0:01.58 httpd 981 root 20 0 0 0 0 S 1.0 0.0 7:42.72 flush-253:0 11978 apache 20 0 68000 37m 6816 S 1.0 1.0 0:04.76 httpd 11424 apache 20 0 62884 30m 6804 S 0.7 0.8 0:10.38 httpd 9586 apache 20 0 61860 29m 6796 S 0.3 0.8 0:02.36 httpd 12269 apache 20 0 73124 41m 6816 R 0.3 1.1 0:03.49 httpd 12395 apache 20 0 53636 21m 6564 S 0.3 0.6 0:01.68 httpd 12397 apache 20 0 57760 25m 6780 S 0.3 0.7 0:02.22 httpd 12594 apache 20 0 51588 19m 6552 S 0.3 0.5 0:00.42 httpd 12727 root 20 0 2660 1148 872 R 0.3 0.0 0:00.01 top 1 root 20 0 2832 1204 1080 S 0.0 0.0 0:00.85 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 4 root 20 0 0 0 0 S 0.0 0.0 0:00.15 ksoftirqd/0 5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0 6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/1 7 root 20 0 0 0 0 S 0.0 0.0 0:01.24 ksoftirqd/1 8 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/1 9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 events/0 10 root 20 0 0 0 0 S 0.0 0.0 0:00.04 events/1 11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuset 12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khelper 13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 netns 14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 async/mgr 15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pm 16 root 20 0 0 0 0 S 0.0 0.0 0:00.00 sync_supers 17 root 20 0 0 0 0 S 0.0 0.0 0:00.00 bdi-default 18 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kintegrityd/0 19 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kintegrityd/1 20 root 20 0 0 0 0 S 0.0 0.0 0:00.36 kblockd/0 21 root 20 0 0 0 0 S 0.0 0.0 0:00.04 kblockd/1 22 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kacpid 23 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kacpi_notify 24 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kacpi_hotplug 25 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ata/0 26 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ata/1
非常感谢,任何帮助,非常感谢!
这里是mysql的processlist输出:
mysql> SHOW PROCESSLIST; +------+------------------+-----------+-------------------+---------+------+----------------------+------------------------------------------------------------------------------------------------------+ | Id | User | Host | db | Command | Time | State | Info | +------+------------------+-----------+-------------------+---------+------+----------------------+------------------------------------------------------------------------------------------------------+ | 3565 | mydbusername | localhost | mydbname | Sleep | 5371 | | NULL | | 6793 | mydbusername | localhost | mydbname | Sleep | 2375 | | NULL | | 9090 | mydbusername | localhost | mydbname | Sleep | 3 | | NULL | | 9094 | mydbusername | localhost | mydbname | Sleep | 2 | | NULL | | 9102 | mydbusername | localhost | mydbname | Query | 0 | preparing | SELECT a.*,cc.description as catdesc, cc.title as cattitle,s.description as secdesc, s.title as sect | | 9103 | mydbusername | localhost | mydbname | Query | 0 | preparing | SELECT a.*,cc.description as catdesc, cc.title as cattitle,s.description as secdesc, s.title as sect | | 9104 | mydbusername | localhost | mydbname | Sleep | 0 | | NULL | | 9107 | mydbusername | localhost | mydbname | Sleep | 0 | | NULL | | 9108 | mydbusername | localhost | mydbname | Sleep | 0 | | NULL | | 9115 | mydbusername | localhost | mydbname | Query | 2 | Copying to tmp table | SELECT a.*, CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug | | 9116 | mydbusername | localhost | mydbname | Query | 1 | preparing | SELECT a.*,cc.description as catdesc, cc.title as cattitle,s.description as secdesc, s.title as sect | | 9123 | mydbusername | localhost | mydbname | Query | 0 | Sorting result | SELECT a.*,cc.description as catdesc, cc.title as cattitle,s.description as secdesc, s.title as sect | | 9127 | mydbusername | localhost | mydbname | Query | 3 | Copying to tmp table | SELECT a.*, CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug | | 9128 | root | localhost | NULL | Query | 0 | NULL | SHOW PROCESSLIST | | 9130 | mydbusername | localhost | mydbname | Query | 3 | Copying to tmp table | SELECT a.*, CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug | | 9131 | mydbusername | localhost | mydbname | Query | 1 | Copying to tmp table | SELECT a.*, CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug | | 9132 | mydbusername | localhost | mydbname | Query | 0 | Copying to tmp table | SELECT a.*, CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug | | 9133 | mydbusername | localhost | mydbname | Sleep | 0 | | NULL | | 9134 | mydbusername | localhost | mydbname | Sleep | 0 | | NULL | | 9135 | mydbusername | localhost | mydbname | Sleep | 0 | | NULL | | 9136 | mydbusername | localhost | mydbname | Query | 0 | Sending data | SELECT id FROM cntc_content WHERE `title`="__404__" | | 9137 | mydbusername | localhost | mydbname | Sleep | 0 | | NULL | | 9138 | mydbusername | localhost | mydbname | Sleep | 0 | | NULL | | 9139 | mydbusername | localhost | mydbname | Sleep | 0 | | NULL | +------+------------------+-----------+-------------------+---------+------+----------------------+------------------------------------------------------------------------------------------------------+ 24 rows in set (0.00 sec)
这里是free -m的输出:
free -m total used free shared buffers cached Mem: 3892 2284 1608 0 64 817 -/+ buffers/cache: 1401 2490 Swap: 6079 4 6075
谢谢你们,真的很感激!
我敢打赌,你有一个问题,查询是好的,less于优化。 您的stream程列表有很多正在写入临时表的查询,然后进行sorting和返回。 通常,这是缺less索引的查询的标志。
testing你的查询的一个好方法就是像这样运行somethign:
login到MySQL客户端。
用前面的描述运行你的查询。
以下是您将看到的一个非常快速的例子:
mysql> describe select * from <table> where lockpid = 1234; +----+-------------+-----------------------------+------+---------------+------+---------+------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-----------------------------+------+---------------+------+---------+------+------+-------------+ | 1 | SIMPLE | <table> | ALL | NULL | NULL | NULL | NULL | 9 | Using where | +----+-------------+-----------------------------+------+---------------+------+---------+------+------+-------------+
上面的SQL语句显示它没有使用索引,只是使用where子句返回。 该表只有9行,所以所有行都必须search并返回。 在一张大桌子上,这可能是丑陋的!
mysql> describe select * from <table> where server = 'spgui01alncr'; +----+-------------+-----------------------------+------+----------------------+----------------------+---------+-------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-----------------------------+------+----------------------+----------------------+---------+-------+------+-------------+ | 1 | SIMPLE | <table> | ref | server_last_used_idx | server_last_used_idx | 16 | const | 4 | Using where | +----+-------------+-----------------------------+------+----------------------+----------------------+---------+-------+------+-------------+ 1 row in set (0.00 sec)
如果您的查询使用索引正确,您应该看到列出可能的键和更less的行被返回和sorting。
还有其他的技巧可以完成,我build议阅读SQL优化和MySQL性能转向。