我有一个 m3.xlarge
的 EC2 实例,今天我将其更新为 PHP 5.5.11
。
在这次更新中,php55-pecl-apc
被替换成了 php55-pecl-apcu
。
在阅读和尝试之后,我的理解是,除了可以通过 APCu
恢复的键值存储之外,APC
已被 OPCache
取代。
调整了配置后,我现在使用 Wordpress 登录时变得非常缓慢,至少比以前慢了 300-900ms(前端通过 Varnish 缓存,并且运行良好......但当你使用管理员时,它会故意不缓存并且非常慢)。
随着升级逐步进行,我进行了一系列基准测试,每个步骤都有一个小样本大小。随着时间推移,性能逐渐恶化。
- APC(升级之前)
-->
- OPCache + 无 APCu
-->
- OPCache + APCu + WP 插件用于 APCu
现在我只使用 OPCache,没有 APCu。
- 我如何实现相同的性能?我喜欢管理员界面,我喜欢它有多快。我真的不认为这是任何改进,这真的很沮丧...除非有一些超级库我不知道。但肯定不是我拥有的,或者可能没有配置好。
- 假设问题1的答案是“你的配置很糟糕”,那么您介意看一下这个并确定是否合理吗?
对于我的设置,我正在使用最新的 Wordpress,一些重要的大型插件,但我无法将它们卸载。幸运的是,Varnish 可以处理大部分工作。我有4个核心,16GB内存,在我的网站根目录中有约10k个文件。除了 WordPress 之外,我没有任何真正强大的应用程序或其他东西,它是一个相当基本的设置。我想这就是可能有帮助的所有内容。
配置:
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.max_wasted_percentage=5
opcache.use_cwd=1
opcache.validate_timestamps=1
opcache.revalidate_freq=0
opcache.revalidate_path=0
opcache.save_comments=0
opcache.load_comments=0
opcache.fast_shutdown=1
opcache.enable_file_override=0
opcache.optimization_level=0xffffffff
opcache.inherited_hack=1
opcache.dups_fix=0
opcache.blacklist_filename=/etc/php-5.5.d/opcache*.blacklist
opcache.max_file_size=2M
opcache.consistency_checks=1
opcache.force_restart_timeout=180
opcache.error_log=/var/log/php-fpm/5.5/opcache.log
opcache.log_verbosity_level=1
opcache.preferred_memory_model=
opcache.protect_memory=0
testopcache.php
的文件,里面包含<?php var_dump(opcache_get_status()); ?>
,然后尝试访问它,它应该会告诉你OPCache是否正常工作。同时,尝试将opcache.max_file_size
增加到5M
或更大。 - user2629998