Kzq*_*qai 8 debian disk-space-utilization tmp inode session
我在使用 Apache2 的 Debian 网络服务器上的 PHP 会话mod_php似乎随机失败,说没有空间来编写它们:
sudo tail -60 /var/log/apache2/error.log
[Fri Jan 30 15:55:35 2015] [error] [client xxx.xxx.xxx.xxx] PHP Warning: session_start() [<a href='function.session-start'>function.session-start</a>]: open(/tmp/sess_555555555555555555, O_RDWR) failed: No space left on device (28) in /path/to-first-session-use/core/bootstrap.php on line 18
Run Code Online (Sandbox Code Playgroud)
当我尝试:
ls /tmp
Run Code Online (Sandbox Code Playgroud)
它只是永远挂起,所以这很糟糕。
但是当我检查可用空间并检查 inode 使用是否合理时......
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 150G 121G 22G 85% /
tmpfs 2.0G 0 2.0G 0% /lib/init/rw
udev 10M 16K 10M 1% /dev
tmpfs 2.0G 4.0K 2.0G 1% /dev/shm
$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 19922944 11143605 8779339 56% /
tmpfs 513524 4 513520 1% /lib/init/rw
udev 513524 135 513389 1% /dev
tmpfs 513524 3 513521 1% /dev/shm
Run Code Online (Sandbox Code Playgroud)
数字看起来不错。当然,85% 比我想要的要多,但它不是 99% 或任何东西。
我怀疑这是一个问题,因为 5 年没有重新启动机器,也许创建了很多小文件,但我得到的 inode 信息与此相矛盾。我应该去哪里调查?
编辑:
ls -l /
drwxrwxrwt 4 root root 692M Feb 1 11:09 tmp/
drwxr-xr-x 10 root root 4.0K Jan 1 2013 usr/
drwxr-xr-x 14 root root 4.0K Oct 7 2010 var/
...etc
Run Code Online (Sandbox Code Playgroud)
可能是/tmp/目录本身充满了未清理的陈旧 PHP 会话;这意味着问题的根源可能与/tmp/目录本身隔离。如果是这种情况,我会删除所有/tmp/sess_*文件。首先,列出所有sess_*文件,如下所示:
ls -la /tmp/sess_*
Run Code Online (Sandbox Code Playgroud)
或者你可以wc这样计算:
ls -la /tmp/sess_* | wc -l
Run Code Online (Sandbox Code Playgroud)
现在一旦你得到一些确认,那里有一些疯狂的文件,继续运行这个命令来删除/tmp/sess_*文件:
sudo rm -rf /tmp/sess_*
Run Code Online (Sandbox Code Playgroud)
短暂的会话文件将被吹走。
但是另一种蛮力(但相对安全)的方法是清除/tmp目录本身,重新创建/tmp目录并重新启动服务器。
由于/tmp目录基本上是缓存材料的编码笔,因此没有任何有效的内容应该在那里。所以我最好的建议是运行以下命令来删除和重新构建/tmp目录。
rm -rf /tmp && mkdir /tmp/ && chown root:root /tmp && chmod 1777 /tmp
Run Code Online (Sandbox Code Playgroud)
现在,一个内胆基本上是由连接shell命令的列表&&,将先删除/tmp,重新创建/tmp,更改的所有权/tmp回root:root,然后设置适当的权限的/tmp目录。如果您愿意,如果您觉得这样做更安全,可以一个一个地运行每个命令。
sudo rm -rf /tmp
sudo mkdir /tmp
sudo chown root:root /tmp
sudo chmod 1777 /tmp
Run Code Online (Sandbox Code Playgroud)
完成后,我建议重新启动服务器。事情应该平静了再清理。
| 归档时间: |
|
| 查看次数: |
21037 次 |
| 最近记录: |