我有一台服务器,在抓取它时,它给出 MySQL 服务器已消失/连接超时/连接被拒绝的错误。当服务器上有大量用户时,它的运行速度似乎在高峰时段大幅下降。我在此服务器上安装了 Magento Enterprise。我想知道这可能是持久连接的问题,还是我的 my.conf 中的某些设置有问题?
以下是有关我的服务器的一些信息:
Processor #1
Vendor
GenuineIntel
Name
QEMU Virtual CPU version (cpu64-rhel6)
Speed
2127.998 MHz
Cache
4096 KB
Processor #2
Vendor
GenuineIntel
Name
QEMU Virtual CPU version (cpu64-rhel6)
Speed
2127.998 MHz
Cache
4096 KB
Processor #3
Vendor
GenuineIntel
Name
QEMU Virtual CPU version (cpu64-rhel6)
Speed
2127.998 MHz
Cache
4096 KB
Processor #4
Vendor
GenuineIntel
Name
QEMU Virtual CPU version (cpu64-rhel6)
Speed
2127.998 MHz
Cache
4096 KB
RAM
10GB
HDD
200GB
这是我的my.conf:
[mysqld]
thread_concurrency=4
thread_cache_size=64
wait_timeout = 400
table_cache=2048
query_cache_type=1
query_cache_size=512M
query_cache_limit=512M
key_buffer_size=256M
max_allowed_packet=32M
max_connections=1000
tmp_table_size=1024M
max_heap_table_size=1024M
table_definition_cache=4000
table_open_cache=4000
open_files_limit=65535
sort_buffer_size=1M
read_buffer_size=1M
join_buffer_size=16M
innodb_thread_concurrency=0
innodb_file_per_table=1
innodb_buffer_pool_size=4G
innodb_lock_wait_timeout=300
innodb_flush_log_at_trx_commit=1
innodb_additional_mem_pool_size=24M
tmpdir=/mysqltmp
log_error=/var/log/mysql/mysql-error.log
log_queries_not_using_indexes=1
slow_query_log_file=/var/lib/mysql/mysql-slow.log
发生这些错误时,服务器资源如下(来自 Munin):
CPU = 395%
RAM (apps) = approx 6gb
I/O Stat (read/write) = approx -10k/10k
答案1
看起来蜘蛛正在让你负担过重。使用mysqltuner检查你的 mysql 配置。
配置数据库,使其不会使用超过 60% 的系统 RAM。
根据您发布的当前信息,减少:
query_cache_size=(我将从 64M 开始)
query_cache_limit=(我将从 1M 开始)
wait_timeout = 400?!将此值等于您的 apache 超时值,并考虑用户等待 300 秒才能得到您的响应;)(我会开始将 mysql 和 apache 都调低到 30 秒。)
增加 open_files_limit如果你有很多表(特别是 myisam),并且不要忘记你的系统限制.conf
如果降低缓冲区没有帮助,您也可以使用 iptables 来限制蜘蛛:)