2

大家晚安,

我有一个运行 CentOS 6 的 VPS,它正在运行 PHP (5.4.8) 和 MySQL (5.5.28) 1cpu、2G RAM、200G 存储的 remi-test 安装。它用于使用 Piwigo 托管我的照片库。根据 PHPmyAdmin,该数据库有 1,385,133 条记录,占用 60.8 MiB。我拥有完全的 root 访问权限,并且我一直在 SSH 中做一些事情,但它对我来说仍然是全新的。

我一直看到这个错误,它似乎导致服务器的 CPU 使用率变高。似乎只是由网络蜘蛛引起的,但它每天只发生几次。

[warn] [client IP] mod_fcgid: stderr: PHP Warning: [mysql error 3] Error writing file '/tmp/MYq8M8yg' (Errcode: 28)
[warn] [client IP] mod_fcgid: stderr: SELECT id
[warn] [client IP] mod_fcgid: stderr: FROM piwigo_images i
[warn] [client IP] mod_fcgid: stderr: INNER JOIN piwigo_image_category ic ON id=ic.image_id
[warn] [client IP] mod_fcgid: stderr: INNER JOIN piwigo_image_tag it ON id=it.image_id
[warn] [client] mod_fcgid: stderr: WHERE tag_id IN (6,18,54,55,445,714)
[warn] [client IP] mod_fcgid: stderr: GROUP BY id
[warn] [client IP] mod_fcgid: stderr: HAVING COUNT(DISTINCT tag_id)=6
[warn] [client IP] mod_fcgid: stderr: ORDER BY file ASC, date_creation DESC in /var/www/vhosts/mydomain.com/subdomains/gallery/include/dblayer/functions_mysql.inc.php on line 770
[client IP] mod_fcgid: stderr: PHP Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /var/www/vhosts/mydomain.com/subdomains/gallery/include/dblayer/functions_mysql.inc.php on line 200 

一个快速的 df -h 显示,

Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda1            4.0G  692M  3.3G  17% /
/dev/mapper/vg00-usr  4.0G  1.5G  2.4G  39% /usr
/dev/mapper/vg00-var  148G   43G   98G  31% /var
/dev/mapper/vg00-home 4.0G  136M  3.7G   4% /home
none                 1000M  112K 1000M   1% /tmp

先感谢您。

4

1 回答 1

0

错误代码 28 表示“设备上没有剩余空间”。

有时 MySQL 在多个步骤中处理复杂查询,同时将中间步骤的结果存储在 /tmp 目录中。即使单个查询没有使用您拥有的所有空间,在繁忙的服务器上同时运行多个查询也可能。

我认为你有两个选择:

  1. 优化您的查询以一次处理更少的数据。在发布的查询中,最有可能的问题是内部连接,它创建了一个临时结果集,其中包含图像、类别和标签的所有可能组合,这比提到的 130 万条记录要多得多。

  2. 在问题上投入资源:给 /tmp 更多空间或将 MySQL 临时目录移到其他地方

于 2012-11-20T22:55:18.933 回答