问题: 我最近改造了我的一台服务器,它在使用前进行了测试,并且运行良好,但是,几天前,我注意到对根卷的写入量大约是通常的 4 倍。这不是性能问题 - 服务器运行良好。
我的改造相当广泛(完全重建),所以就原因而言,我没有太多事情要做。简而言之,我的变化包括:
基本设置:
free和iostat显示最小的交换使用)。mount --bind)。底层 EBS 卷安装在/mnt/data新设置比旧系统运行“更流畅”(更快、更少内存等),并且已经稳定了 20 天(10 月中旬)——据我所知,提升的写入一直存在.
与我的预期相反,我的读取量很低(我的读取量约占写入量的 1.5%,无论是在我的根卷上的块还是字节数)。在过去的几天里,我没有对根卷(例如新安装等)进行任何更改,但写入量仍然比预期高得多。
目标:确定对根卷的写入增加的原因(本质上,确定它是一个进程(以及哪个进程)、不同的(ext4)文件系统或其他问题(例如内存))。
系统信息:
我正在尝试为 Wordpress 站点配置服务器。我应该使用什么来缓存操作码?APC、xcache 还是 eAccelerator?
我想进一步优化 APC,但我不确定在哪里可以做些什么。首先是使用当前配置运行一周后的屏幕截图:

我现在有以下几点我不确定:
我最感兴趣的是回答这些问题。只有这样我才能更好地理解APC并自己做出调整。
一些详细信息:在此服务器上运行 Drupal 和 Magento。Drupal 也将其用作用户缓存。
我现在的问题是如何优化它。我可以分配更多的内存,但我不确定这是否真的有很大帮助。
更新:这是配置:
; The size of each shared memory segment in MB.
apc.shm_size = 192M
; Prevent files larger than this value from getting cached. Defaults to 1M.
apc.max_file_size = 2M
; The number of seconds a cache entry is allowed to idle in a slot in case
; this cache entry slot is needed by another entry.
apc.ttl = …Run Code Online (Sandbox Code Playgroud) 我看到一些间歇性 CPU 使用率飙升至 100%,这与这些日志条目有关:
[27-Feb-2012 13:29:29] PHP Fatal error: PHP Startup: apc_mmap: mmap failed: in Unknown on line 0
[27-Feb-2012 13:29:30] PHP Fatal error: PHP Startup: apc_mmap: mmap failed: in Unknown on line 0
[27-Feb-2012 13:29:31] PHP Fatal error: PHP Startup: apc_mmap: mmap failed: in Unknown on line 0
[27-Feb-2012 13:29:31] PHP Fatal error: PHP Startup: apc_mmap: mmap failed: in Unknown on line 0
Run Code Online (Sandbox Code Playgroud)
phpinfo() 表示 APC 已设置,据我所知,此错误不会在实时站点上导致可见的 500 个错误,这是一个 WordPress 安装,每月观看次数约为 60 万次。到目前为止,谷歌一直没有帮助,我希望这里有人对导致这种情况的原因以及如何解决它有一些见解。奇怪的是,这个错误只显示在 /usr/local/apache2/logs/error_log 而不是 cpanel 配置站点的 error_log。
当我安装 APC 时:
pecl install apc
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
apache2-prefork-dev : Depends: apache2.2-common (= 2.2.22-1ubuntu1.4) but it …Run Code Online (Sandbox Code Playgroud) 我的本地开发配置:
extension=php_apc.dll到我的php.in.结果:有时页面挂起,我必须从服务面板手动重新启动 Apache。任何人都经历过这个吗?我的配置有问题吗?即使使用简单的phpinfo页面也会发生这种情况:
<?php phpinfo() ?>
Run Code Online (Sandbox Code Playgroud) 我的服务器上运行了多个具有相似配置的 APC 实例(尽管具有不同的缓存大小。但是,其中一个实例的性能非常差,我不知道为什么(100% 缓存碎片,高未命中率)。

我使用的运行时设置如下(几乎是开箱即用的):
apc.cache_by_default 1
apc.canonicalize 1
apc.coredump_unmap 0
apc.enable_cli 0
apc.enabled 1
apc.file_md5 0
apc.file_update_protection 2
apc.filters
apc.gc_ttl 3600
apc.include_once_override 0
apc.lazy_classes 0
apc.lazy_functions 0
apc.max_file_size 1M
apc.mmap_file_mask
apc.num_files_hint 1000
apc.preload_path
apc.report_autofilter 0
apc.rfc1867 0
apc.rfc1867_freq 0
apc.rfc1867_name APC_UPLOAD_PROGRESS
apc.rfc1867_prefix upload_
apc.rfc1867_ttl 3600
apc.shm_segments 1
apc.shm_size 10M
apc.slam_defense 1
apc.stat 1
apc.stat_ctime 0
apc.ttl 0
apc.use_request_time 1
apc.user_entries_hint 4096
apc.user_ttl 0
apc.write_lock 1
Run Code Online (Sandbox Code Playgroud)
APC是3.1.6版本,PHP是5.3.3-1ubuntu9.5。我试过多次重启 Apache,所以这不是一个怪异的例子。
有问题的实例只是在安装了一些插件的情况下运行 Wordpress。服务器上的所有其他实例 (~4) 都运行得非常好,命中率几乎为 100%,碎片率为 0%;例如,这个实例持有一个使用 …
我们正在使用 iuscommunity repo 运行 CentOS 6 节点,并且想要将之前安装的 php53u 升级到 php54。
但是,这会在 php53u 和 php54 之间引入依赖冲突。有没有人对这个问题有想法?
--> Running transaction check
---> Package php54-fpm.i686 0:5.4.5-1.ius.el6 will be installed
--> Processing Dependency: php-common = 5.4.5-1.ius.el6 for package: php54-fpm-5.4.5-1.ius.el6.i686
---> Package php54-gd.i686 0:5.4.5-1.ius.el6 will be installed
---> Package php54-mbstring.i686 0:5.4.5-1.ius.el6 will be installed
---> Package php54-pecl-apc.i686 0:3.1.11-2.ius.el6 will be installed
--> Processing Dependency: php54 >= 5.3.5-1 for package: php54-pecl-apc-3.1.11-2.ius.el6.i686
--> Running transaction check
---> Package php54.i686 0:5.4.5-1.ius.el6 will be installed
--> Processing Dependency: php54-cli …Run Code Online (Sandbox Code Playgroud) 我准备了一个服务器来运行一个 Magento 实例:Apache + Php-FPM + APC
我遇到的问题是 Apache 没有压缩 Magento PHP 脚本的 HTML 输出。
在我的 .htaccess 我有:
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
AddOutputFilterByType DEFLATE application/xml application/xhtml+xml application/rss+xml
AddOutputFilterByType DEFLATE application/javascript application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
Run Code Online (Sandbox Code Playgroud)
我还尝试使用以下方法压缩所有内容:
SetOutputFilter DEFLATE
Run Code Online (Sandbox Code Playgroud)
但我没有运气。
Zlib 压缩被禁用:
php_flag zlib.output_compression on
Run Code Online (Sandbox Code Playgroud)
我的猜测是这与 Php-FPM 或 APC 有关系,但我不确定问题是什么。
为未压缩页面返回的 MIME 类型是:
Content-Type: text/html; charset=UTF-8
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
更新:问题似乎与 PHP 处理的任何内容有关,如果我将 html 输出复制到 .html 文件然后获取它,它将被压缩,如果我将同一文件重命名为 .php 并将其获取输出不会被压缩。以下是标题:
[[响应标题 HTML 文件]]
Date Fri, 29 Aug 2014 20:03:13 GMT
Content-Encoding gzip …Run Code Online (Sandbox Code Playgroud) 我有一个运行在低端机器(1GB RAM)上的 Web 应用程序,提供静态和动态 (php) 页面的混合。这些 PHP 页面正在查询一个根本不经常更改的 MYSQL 数据库 - 每周一次?
我希望进行大量缓存以保持一切正常和快速。我的页面虽然是 php,但信息很少更改(获取可能每隔几个月更改一次的项目列表?)。几页可能会列出多达 400 条记录。
我安装了 Varnish、nginx、PHP-FPM、APC、MYSQL。我“认为”我已经正确设置了一切。正在提供页面,并且我在 Varnish 中显示了点击数... Brill!但是,由于网站的性质,我不确定它是否已尽可能优化。
最近的搜索提出了一些可能对我的 php 页面有所帮助的内容:
一个例子:一个新的 PHP 页面,它列出了相当多(200+)条记录:2 秒刷新后,1.5(ish)秒。编辑:我期望这个页面被缓存在某处并且在访问后更快地提供是不切实际的吗?
我最好的选择是什么?以上一项或全部?
php ×5
apache-2.2 ×4
php-fpm ×3
amazon-ebs ×1
centos ×1
ext4 ×1
io ×1
mod-deflate ×1
mysql ×1
nginx ×1
optimization ×1
php5 ×1
varnish ×1
windows ×1
xcache ×1