環境:php
一個本地開發環境數據庫
一個部署在虛擬機中( 虛擬機安裝memcache緩存),而後用這個優化的版本跟本地開發環境對比.緩存
wordpress版本:4.9.5服務器
php:5.6版本memcached
1,首先在主題的functions.php文件中,加入如下監控統計代碼wordpress
function performance( $visible = true ) { $stat = sprintf( '%d queries in %.3f seconds, using %.2fMB memory', get_num_queries(), timer_stop( 0, 3 ), memory_get_peak_usage() / 1024 / 1024 ); // echo $visible ? $stat : "<!-- {$stat} -->" ; echo "<div class='container_12'><p class='grid_12 footer clearfix'>$stat</p></div>"; } add_action( 'wp_footer', 'performance', 20 );
樣式能夠根據本身的主題定製,這段代碼能夠統計出頁面有多少次數據庫查詢。總共花了多少秒,耗費多少內存,相似以下的樣式:性能
16 queries in 1.306 seconds, using 12.98MB memory
2,安裝memcached服務端優化
[root@bogon wp-content]# ps -ef | grep memcached root 5050 3466 0 14:44 pts/1 00:00:00 grep memcached root 29269 1 0 13:57 ? 00:00:02 /usr/local/memcached/bin/memcached -d -l 127.0.0.1 -p 11211 -u root -m 64 -c 1024 -P /var/run/memcached.pid
3,安裝php memcache擴展spa
wget http://pecl.php.net/get/memcache-3.0.8.tgz,用phpize外掛方式安裝,安裝完成以後,在php.ini中啓用,再重啓php,肯定memcache已經加載.net
memcache
memcache support enabled
Version 3.0.8
Revision $Revision: 329835 $
Directive Local Value Master Value
memcache.allow_failover 1 1
memcache.chunk_size 32768 32768
memcache.compress_threshold 20000 20000
memcache.default_port 11211 11211
memcache.hash_function crc32 crc32
memcache.hash_strategy consistent consistent
memcache.lock_timeout 15 15
memcache.max_failover_attempts 20 20
memcache.protocol ascii ascii
memcache.redundancy 1 1
4,下載wordpress memcache插件
wget https://downloads.wordpress.org/plugin/memcached.3.0.1.zip
把object-cache.php解壓到wp-content目錄下
[root@bogon wp-content]# ls index.php languages object-cache.php package.xml plugins themes upgrade uploads [root@bogon wp-content]#
最後比較服務器
安裝了memcache緩存的版本,首頁性能:
3 queries in 0.451 seconds, using 13.56MB memory
沒有啓用緩存的系統,首頁性能:
16 queries in 1.336 seconds, using 12.98MB memory
能夠看見有很明顯的提高,其餘頁面都會被優化,緩存到
啓用opcache,再次提速:
3 queries in 0.129 seconds, using 3.48MB memory
php.ini中opcache須要這樣加載:
zend_extension=opcache.so
opcache相關配置:
[opcache] ; Determines if Zend OPCache is enabled opcache.enable=1 ; Determines if Zend OPCache is enabled for the CLI version of PHP opcache.enable_cli=1 ; The OPcache shared memory storage size. opcache.memory_consumption=528 ; The amount of memory for interned strings in Mbytes. opcache.interned_strings_buffer=8 ; The maximum number of keys (scripts) in the OPcache hash table. ; Only numbers between 200 and 100000 are allowed. opcache.max_accelerated_files=10000 ; The maximum percentage of "wasted" memory until a restart is scheduled. ;opcache.max_wasted_percentage=5 "php.ini" 2051L, 74201C written [ldap] ; Sets the maximum number of open links or -1 for unlimited. ldap.max_links = -1 [mcrypt] ; For more information about mcrypt settings see http://php.net/mcrypt-module-open ; Directory where to load mcrypt algorithms ; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt) ;mcrypt.algorithms_dir= ; Directory where to load mcrypt modes ; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt) ;mcrypt.modes_dir= [dba] ;dba.default_handler= [opcache] ; Determines if Zend OPCache is enabled opcache.enable=1 ; Determines if Zend OPCache is enabled for the CLI version of PHP opcache.enable_cli=1 ; The OPcache shared memory storage size. opcache.memory_consumption=528 ; The amount of memory for interned strings in Mbytes. opcache.interned_strings_buffer=8 ; The maximum number of keys (scripts) in the OPcache hash table. ; Only numbers between 200 and 100000 are allowed. opcache.max_accelerated_files=10000