几天前,我注意到磁盘 I/O 等待和磁盘活动下降(这很棒)。然后我还注意到我的缓存已满(*)并且碎片化。然后我刷新了缓存。在那之后,磁盘延迟和磁盘活动跳到了之前的水平(这很糟糕)。
IOtop 显示 [jbd2/sda2-8] 和 [flush-8:00] 始终处于磁盘使用率之上。这是一个 Dell R210,硬件 RAID 1 (H200),具有大量可用内存(总共 16 GB,其中大约 8 GB 是缓冲区/缓存)。
(*) 缓存是 PHP 的 APC 操作码缓存,它减少了 PHP 脚本执行的磁盘访问。缓存已满且碎片化,因为它包含来自开发实例的文件。当我注意到这一点时,我将它们过滤掉了。
问题是:为什么磁盘 I/O 在理论上应该减少时增加?以下是来自 munin 的一些图表。从 2 月 6 日到 8 日,缓存已满。

在我注释掉 @cyberx86 所说的 apc.mmap_file_mask 后更改

我有一个 HTTP 服务器,它只提供两种页面:大约 10 KB 和大约 16 KB(都是压缩的,其他文件来自 CDN)。由于延迟非常高(ping需要超过 300 毫秒),我想优化 TCP 堆栈,以便客户端尽快接收整个页面。
因此,我有一个双重问题:
我的服务器 Dell R210 运行带有预配置硬件 RAID1 (H200) 的 Debian 压缩包。但我注意到有 mdadm 正在运行。有时在备份或操作系统升级(到 Debian 6.0.4)时,我会收到如下消息:
W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.
W: mdadm: no arrays defined in configuration file.
Run Code Online (Sandbox Code Playgroud)
忽略它们是否安全?如何禁用 mdadm?只是一个/etc/init.d/mdadm stop,一点点观察apt-get remove mdadm呢?
我使用 memcached 包在 Debian 上安装了 memcached。memcached 实例从 384 MB 开始。然后我尝试连接:
jcisio@cecile:~$ telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set mykey 0 60 5
get mykey
CLIENT_ERROR bad data chunk
ERROR
stats items
END
Run Code Online (Sandbox Code Playgroud)
这是什么意思?通常get mykey应该返回 5。
stats 命令给出
STAT pid 5456
STAT uptime 21334
STAT time 1326180707
STAT version 1.4.5
STAT pointer_size 64
STAT rusage_user 0.168010
STAT rusage_system 0.204012
STAT curr_connections 5
STAT total_connections 9
STAT connection_structures 6
STAT cmd_get 0
STAT cmd_set …Run Code Online (Sandbox Code Playgroud) debian ×3
cache ×1
hard-drive ×1
http ×1
mdadm ×1
memcached ×1
optimization ×1
performance ×1
tcp ×1