2

こんばんは、

CentOS 6 を実行している VPS があり、PHP (5.4.8) および MySQL (5.5.28) 1cpu、2G RAM、200G ストレージのレミテスト インストールを実行しています。Piwigo を使用して私の写真ギャラリーをホストするためのものです。データベースには 1,385,133 レコードがあり、PHPmyAdmin によると 60.8 MiB を占めます。私は完全なルート アクセス権を持っており、SSH でいくつかのことを行ってきましたが、まだすべてが新しいものです。

このエラーが表示され続けます。サーバーの CPU 使用率が高くなるようです。Webスパイダーのみが原因のようですが、1日に数回しか発生していません.

[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 は、「デバイスに空き領域がない」ことを意味します。

中間ステップの結果を /tmp ディレクトリに保存しながら、MySQL が複数のステップで複雑なクエリを処理することがあります。1 つのクエリがすべてのスペースを使用しない場合でも、ビジー状態のサーバーで複数のクエリを同時に実行すると、スペースがすべて使用される可能性があります。

次の 2 つのオプションがあると思います。

  1. 一度に処理するデータが少なくなるようにクエリを最適化します。投稿されたクエリで最も可能性が高いのは、内部結合です。これにより、画像、カテゴリ、およびタグのすべての可能な組み合わせを含む一時的な結果セットが作成されます。これは、前述の 130 万レコードをはるかに超えています。

  2. 問題にリソースを投げます: /tmp により多くのスペースを与えるか、MySQL 一時ディレクトリを別の場所に移動します

于 2012-11-20T22:55:18.933 に答える