【发布时间】:2015-10-30 05:57:55
【问题描述】:
在过去的几个月里,我一直在疯狂优化我正在管理的 Joomla 网站。当我第一次启动时,尽管按照托管公司的建议,我反复升级了我的专用服务器,但主页通常会在 30-40 秒内打开。
通过认真遵循 GT Matrix 和 PingdomTools 之类的所有建议(例如使用 JCH 优化、.htaccess 缓存和压缩设置以及 MaxCDN),我能够将页面速度降低到 800 毫秒左右,但现在我我一直在优化我的 my.cnf 设置,尝试了许多相关文章中建议的各种设置。使用当前设置打开主页的最快速度是刷新后 777 毫秒,这听起来可能还不错,但请查看我的专用服务器的配置:
- 2 Quads、128GB、2x480GB SSD RAID
- CloudLinux/Cpanel/WHM
- Apache/suEXEC/PHP5/FastCGI
- MariaDB 10.0.17(所有表都转换为 XtraDB/InnoDB)
网站流量适中,每天有 10,000 和 20,000 名访问者,浏览量约为 200,000。
这些是当前的 my.cnf 设置。我的目标是将页面速度降低到 600 毫秒以下,只要调整方式正确,这种硬件应该可以做到这一点。
[mysqld]
local-infile=0
max_connections=10000
max_user_connections=1000
max_connect_errors=20
key_buffer_size=1G
join_buffer_size=1G
bulk_insert_buffer_size=1G
max_allowed_packet=1G
slow_query_log=1
slow_query_log_file="diskar/mysql-slow.log"
long_query_time=40
connect_timeout=120
wait_timeout=20
interfactive_timeout=25
back_log=500
query_cache_type=1
query_cache_size=512M
query_cache_limit=512K
query_cache_min_res_unit=2K
sort_buffer_size=1G
thread_cache_size=16
open_files_limit=10000
tmp_table_size=8G
thread_handling=pool-of-threads
thread_stack=512M
thread_pool_size=12
thread_pool_idle_timeout=500
thread_cache_size=1000
table_open_cache=52428
table_definition_cache=8192
default-storage-engine=InnoDB
[innodb]
memlock
innodb_buffer_pool_size=96G
innodb_buffer_pool_instances=12
innodb_additional_mem_pool_size=4G
innodb_log_bugger_size=1G
innodb_open_files=300
innodb_data_file_path=ibdata1:400M:autoextend
innodb_use_native_aio=1
innodb_doublewrite=0
innodb_user_atomic_writes=1
innodb_flus_log_at_trx_commit=2
innodb_compression_level=6
innodb_compression_algorithm=2
innodb_flus_method=O_DIRECT
innodb_log_file_size=4G
innodb_log_files_in_group=3
innodb_buffer_pool_instances=16
innodb_adaptive_hash_index_partitions=16
innodb_thread_concurrency
innodb_thread_concurrency=24
innodb_write_io_threads=24
innodb_read_io_threads=32
innodb_adaptive_flushing=1
innodb_flush_neighbors=0
innodb_io_capacity=20000
innodb_io_capacity_max=40000
innodb_lru_scan_depth=20000
innodb_purge_threads=1
innodb_randmon_read_ahead=1
innodb_read_io_threads=64
innodb_write_io_threads=64
innodb_use_fallocate=1
innodb_use_atomic_writes=1
inndb_use_trim=1
innodb_mtflush_threads=16
innodb_use_mfflush=1
innodb_file_per_table=1
innodb_file_format=Barracuda
innodb_fast_shutdown=1
我尝试了 Memcached 和 APCU,但没有成功。使用“文件”作为 Joomla 全局配置中的缓存处理程序,该站点的运行速度实际上快了 2-3 倍。是的,我运行了 my-sqltuner,但这无济于事。
就 Linux 而言,我是新手,并怀疑上述设置可以改进。有什么 cmets 和/或建议吗?
【问题讨论】:
-
你为什么认为这是一个数据库问题?
-
mysql慢日志还报什么吗?是否有任何数据库查询需要很长时间?生成首页(或其他)需要多少查询 您是否针对 PHP 代码运行 Blackfire.io 或 Xhprof 分析器?它是否在 PHP 5.6 上安装了 Opcache?您实际上在数据库中有接近 100GB 的数据吗?
-
opcache 已安装。其余的我现阶段无法回答,所以我会调查,或者答案是否定的。我怀疑我是否可以对 php 代码做很多事情,因为我正在使用带有标准扩展的 Joomla,例如 Jomsocial 和 EasyDiscuss,它们对数据库的要求都很高。在这里发布这个的主要原因是我是my.cnf调优的新手,所以我怀疑我可能做错了什么。
-
Pingdom 工具统计 80 次主页请求,加载时间为 750 毫秒至 1.3 秒。
标签: performance mariadb my.cnf