我们的mysql服务器由于打开的连接数量而导致巨大的过载。 在我的情况下,大多数连接都处于打开状态,我甚至无法杀死它们。 那是我无法理解的。 连接看起来像这样:
| 13927 | slimdiz1_dstream | localhost | slimdiz1_docstream | Query | 20 | closing tables | SELECT autoload FROM wp_options WHERE option_name = '_site_transient_theme_roots' | | 13934 | okanaga1_db1 | localhost | okanaga1_db1 | Query | 5 | Opening tables | INSERT INTO sessions VALUES('e442db394d16e7ac5d2154ae3e1ccbe4', '1306059991', 'a:5:{s:11:"LoginCooki | | 13935 | mkca1_wrdp5 | localhost | mkca1_wrdp5 | Query | 7 | Opening tables | SELECT * FROM wp_users WHERE ID = 1 ..
连接到Web服务器的连接号码(最大为150):
ps -e | grep httpd | wc -l 109
有效内存:
free -mto total used free shared buffers cached Mem: 7974 5565 2409 0 153 1373 Swap: 2047 31 2016 Total: 10022 5597 4425
MySQL服务器版本和configuration文件:
[mysqld] safe-show-database set-variable = max_connections=450 set-variable = interactive_timeout=150 set-variable = connect_timeout=35 set-variable = wait_timeout=70 set-variable = max_user_connections=30 set-variable = key_buffer=48M set-variable = read_buffer=5M set-variable = join_buffer=1M set-variable = record_buffer=1M set-variable = sort_buffer=2M set-variable = table_cache=1028 set-variable = thread_cache=128 set-variable = query_cache_limit=1M set-variable = query_cache_size=1024M set-variable = query_cache_type=1 set-variable = thread_concurrency=4 set-variable = max_allowed_packet=5M set-variable = delayed_insert_limit=80 set-variable = delayed_insert_timeout=200 set-variable = delayed_queue_size=700 set-variable = flush_time=300 mysql Ver 14.12 Distrib 5.0.91, Linux 2.6.38.3-grsec
我正在使用以下命令在负载过高时查杀mysql进程:
killall -9 httpd php mysqladmin pr | awk {'print$2'} | xargs -i mysqladmin kill {};
你能帮我理解,尽pipe服务器上有免费的资源,为什么进程在开放状态下被挂起?
PS我在这个问题上search,阅读一些文章,通过这个论坛search没有成功。
提前感谢您的帮助。
更新。 顶级-c输出:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 24738 mysql 20 0 1480m 310m 4612 S 70 13 7:46.33 /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql
SQL请求“堆积”在服务器上的一个常见原因是MySQL的/ MyISAM的穷人的“locking机制”,即使不值得它的名字 。 如果您有一个长时间运行的SELECT查询,则对长时间运行的SELECT使用/locking的表进行的任何INSERT,UPDATE或DELETE查询都将导致“拥塞”,并停止使用任何连续查询受影响的表。
在MySQL中使用SHOW FULL PROCESSLIST
命令来检查当你再次遇到这种情况时你是否有许多查询处于“locking”状态。