【发布时间】:2012-08-10 18:26:29
【问题描述】:
我们将使用 QNAP 作为 Web 开发服务器。
我们有以下内容:
- TS-EC1279U-RP(四核 Intel Xeon E3-1225 3.1GHz 处理器,4GB 内存和 12 个 RAID 6 硬盘)
- PHP 版本 5.3.9
- MYSQL 服务器版本:5.1.36
我们已经安装了 Drupal 和 Joomla,但是响应时间似乎很慢。我们等待大约 5 - 6 秒才能得到响应。我们已经为我的 sql 编辑了 my.cnf(见下文)
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
skip-networking
skip-name-resolve
max_connections=500
key_buffer_size=384M
max_allowed_packet=16M
table_cache=256
sort_buffer_size=2M
read_buffer_size=2M
join_buffer_size=2M
thread_cache=256
query_cache_type=1
query_cache_limit=1M
query_cache_size=32M
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
[isamchk]
key_buffer=128M
sort_buffer_size=128M
read_buffer=2M
write_buffer=2M
[myisamchk]
key_buffer=128M
sort_buffer_size=128M
read_buffer=2M
write_buffer=2M
[mysqlhotcopy]
interactive-timeout
但是,即使根据不同站点推荐的上述更改,性能也有所提高,但只是一点点。
我们的测试站点位于 QNAP 和一家托管公司。托管公司服务器上的响应要快得多。我知道他们有更好的硬件,但是 QNAP 上的 CPU 图表甚至没有超过 3%。
谢谢
更新:
我添加了日志慢查询。我已经使用了该网站大约 30 分钟:到目前为止的结果:
/usr/local/mysql/libexec/mysqld, Version: 5.1.36-log (Source distribution). started with:
Tcp port: 3306 Unix socket: /tmp/mysql.sock
Time Id Command Argument
/usr/local/mysql/libexec/mysqld, Version: 5.1.36-log (Source distribution). started with:
Tcp port: 3306 Unix socket: /tmp/mysql.sock
Time Id Command Argument
没有迹象表明 SQL 查询的时间超过 1 秒。所以我不确定是 PHP.ini 还是 my.cnf 设置。
谢谢
【问题讨论】:
-
也许您的查询没有优化?
-
查看dev.mysql.com/doc/refman/5.1/en/slow-query-log.html 以识别您的慢查询并尝试优化它们。
-
@matt 我不这么认为。我尝试过全新安装 joomla、drupal 和 word press。它们似乎都在 5-6 秒左右,我还复制了一个生产站点。结果相同。现场直播约 0.8 秒(实时),qnap 约 5-6 秒。我会试试你提供的链接。谢谢
-
根据我的经验,大多数情况下我从数据库中得到缓慢的响应是因为查询没有优化。确保在记录任何慢速查询后正确索引您的表,您会看到性能大幅提升(当然,如果索引是问题的话)。
-
大多数 GUI 都有一种点击式的方式来为您的列添加索引。要确定哪些列需要索引,请在查询上执行
EXPLAIN(只需在SELECT之前输入EXPLAIN并执行查询)。基本上,它会告诉您在尝试执行查询时每个表中命中了多少行。高命中表需要比较列上的索引。