質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

Q&A

解決済

4回答

711閲覧

データベースエラーが頻発しており、原因を調査、解決したいです。

yosuke_ir

総合スコア12

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

0グッド

1クリップ

投稿2019/02/19 08:25

編集2019/02/19 12:47

前提・実現したいこと

現在WEBサイトを運営しているサーバー上で
データベースエラーが頻発しております。
サーバーをrebootすれば一時的には解決され
サイトが表示できるようになるのですが、
しばらくするとまたエラーになってしまいます。

こちらの問題の根本原因を調査し、解決したいのですが
サーバー、データベースが素人なので方法がわかりません。
ご協力お願いいたします。

利用環境
【サーバー】さくらのVPS
【OS】CentOS Linux release 7.5.1804 (Core)
【Apache】Apache/2.4.6 (CentOS)
【php】PHP Version 7.1.20
【DB】mysql Ver 15.1 Distrib 5.5.56-MariaDB
【CMS】wordpress

発生している問題・エラーメッセージ

Error establishing a database connection

サイトにアクセスすると上記のエラーメッセージが表示されます。
またエラー発生時にphpMyadminにアクセスしようとすると、アクセスを拒否されてしまいます。

また、サーバーをrebootで再起動をすると、
apacheが落ちてしまう問題も発生しており
systemlctl start httpd.service 
こちらでapacheを再起動して、一時的に元の状態に戻しております。

試したこと

さくらインターネットに問い合わせたところ
「クエリが溜まってしまってエラーが起きているので、サイトの作り方に問題がある」
とのような指摘を受けました。

また、通常時にphpMyadminから負荷状況を確認すると
以下のような動きをして、その直後にエラーになってしまいました。
phpMyadminから

調査中の内容

ワードプレスで投げているクエリ
クエリ

ssl_error_logに出て来た内容(一部編集、省略しています)

PHP Warning: mysqli_query(): MySQL server has gone away in /var/www/html/wp-includes/wp-db.php on line 1924, referer: https://xxx.jp/wp-login.php

wp-db.phpの内容

1923 if ( ! empty( $this->dbh ) && $this->use_mysqli ) { 1924 $this->result = mysqli_query( $this->dbh, $query );

error_logに出て来た内容

[Tue Feb 19 20:40:09.197235 2019] [auth_digest:notice] [pid 1369] AH01757: generating secret for digest authentication ... [Tue Feb 19 20:40:09.198151 2019] [lbmethod_heartbeat:notice] [pid 1369] AH02282: No slotmem from mod_heartmonitor [Tue Feb 19 20:40:09.352513 2019] [mpm_prefork:notice] [pid 1369] AH00163: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.1.20 configured -- resuming normal operations [Tue Feb 19 20:40:09.352571 2019] [core:notice] [pid 1369] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND' [Tue Feb 19 20:58:11.618087 2019] [mpm_prefork:notice] [pid 1369] AH00170: caught SIGWINCH, shutting down gracefully [Tue Feb 19 21:00:06.554993 2019] [suexec:notice] [pid 917] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) [Tue Feb 19 21:01:27.270616 2019] [auth_digest:notice] [pid 917] AH01757: generating secret for digest authentication ... [Tue Feb 19 21:01:27.271686 2019] [lbmethod_heartbeat:notice] [pid 917] AH02282: No slotmem from mod_heartmonitor [Tue Feb 19 21:01:27.412179 2019] [mpm_prefork:notice] [pid 917] AH00163: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.1.20 configured -- resuming normal operations [Tue Feb 19 21:01:27.412242 2019] [core:notice] [pid 917] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

横から失礼します。

CMSがwordpressということなのでインストール・有効化したプラグイン群の中に重たいクエリを実行しているのではないでしょうか?
自作プラグイン・導入したプラグインの中でクエリを投げている部分がないか調べ、apacheのログファイルでエラーが頻発している時間・対象URLを確認していけばきっと解決できるはずです!頑張ってください

サーバーをrebootで再起動をすると、apacheが落ちてしまう問題も発生しており...

こちらはapacheの自動起動設定を行うことで解決するのではないでしょうか?
「apache 自動起動 centOS7」などで調べて頂くと色々と情報が出てくると思います(既に設定済みでしたら申し訳ないです、、)

投稿2019/02/19 09:53

Recaldent

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yosuke_ir

2019/02/19 12:50 編集

ワードプレスが投げているクエリの一覧と、エラーログの内容、エラーにあったwp-db.phpの内容も確認してみましたが、僕の知識、技術力ではわかりませんでした。(追記しております。) 見る箇所が違っているのか、見る箇所があっているが内容を理解していないのかもわからない状態です。 素人質問で大変申し訳ありませんが、見る箇所を間違えているか、みている箇所はあってるとすれば、どういった問題が確認できるか、教えていただけないでしょうか?
CHERRY

2019/02/20 01:06

(横から...) WordPress のクエリですが、83個で 0.0658 秒であれば、極端に遅いクエリはなさそうですね。
yosuke_ir

2019/02/20 09:49

CHERRY様 ありがとうございます。 同じような事例をネットで調べていたところ WPプラグインの機能を使って解決することができました。 ご協力ありがとうございました
guest

0

取り急ぎ本件の解決を最短で行いたいため、本ケースにおける解決方法、調査方法をご存知でしたら教えていただけると助かります。

残念ながら、質問の内容では情報が少なくて回答できる内容ではないので、一般論で....


設定が間違っていない(直前まで稼働していて変更していない)状態で急に

Error establishing a database connection

のようなエラーが発生する状況だとプロセス数が多すぎることによるメモリ不足が原因と思われます。

--

Web サーバーのアクセスログを調べると負荷が高くなるあたりから急激にアクセスが増えていたりしないでしょうか?

/wp-login.php へのアクセスが多いのであれば、「ブルートフォースアタック(パスワード総当たり攻撃)」を受けている可能性が高いでしょう。

不正なアタック攻撃ではなく、普通のコンテンツへのアクセスが多いのであれば、サーバーのスペックを見直すか現在のスペックに合わせてメモリ不足にならない程度に接続数を絞るなどの対策が必要です。

古いバージョンの WordPress だと XSS を狙われた可能性もありますが...

また、さくらの VPS の下位プランだと MySQL と Apache のプロセス数等の設定が CentOS の yum でインストールしたデフォルト設定のままの場合、WordPress へのアタック攻撃等の多数のアクセスがあると 同時アクセスの上限に引っかかる前にメモリ不足になり、メモリスワップが発生して負荷が急激に高くなりますが、この状態になっているのではないかと思います。

--

対策ですが...

/wp-login.php への不正アクセスであれば、 firewalld 等で 不正にアクセスしてくるIPアドレスからのアクセスを遮断する。

■ さくらの VPS なら SiteGuard Lite が使えると思いますので、導入する。( CMSのセキュリティ対策 ~SiteGuardシリーズでセキュリティ強化(その3)~ 参照 )

■ スペックに合わせて apache / mysql ( mariadb ) の設定を最適化する。or サーバのプランを見直す。

などでしょうか。

投稿2019/02/20 00:55

編集2019/02/20 01:08
CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yosuke_ir

2019/02/20 09:56

CHERRY様 重ねて御礼になりますが、 詳しくご説明いただきましてありがとうございます。 一時的には解決いたしましたが、引き続き調査を続け、スケールアップ等も検討してみます。
guest

0

単純に考えると、
データベースとのコネクションをクローズしないまま、次のオープンを行っている
パターンに見えます。

プログラムの中でデータベースとのコネクションをどう処理しているか確認しましょう。

投稿2019/02/19 08:31

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yosuke_ir

2019/02/19 08:46

申し訳ありません。 確認方法も教えていただけないでしょうか? sshで何かしらのコマンドで確認をするのでしょうか。 それともワードプレス内のphpなどの記述を確認するのでしょうか?
yosuke_ir

2019/02/19 12:25

scsi様 ありがとうございます。勉強してみます。 取り急ぎ本件の解決を最短で行いたいため、本ケースにおける解決方法、調査方法をご存知でしたら教えていただけると助かります。 ※他の方のご指摘を踏まえて、ワードプレスが投げているクエリの一覧と、エラーログの内容を追記してみました。
scsi

2019/02/19 13:05

私はデータベースエンジニアではないのでss,iostat,top,iostat,psコマンドの結果やsyslogから当たりをつけます。手っ取り早く解決したいならクラウドワークスなどでお金払って解決してもらうのがいいかと思います。
yosuke_ir

2019/02/20 09:49

scsi様 ありがとうございます。 色々調べましたが原因は特定できませんでした。 ただ、別ルートで同じような事例をネットで調べていたところ WPプラグインの機能を使って解決することができました。 ご協力ありがとうございました
guest

0

自己解決

http://netaction.hatenablog.jp/entry/2016/05/21/215343
こちらの記事を参考に
ワードプレスのプラグイン「WP-DBManager」を使って
repairを実施したところ、エラーの頻発が止まりました。

完全な原因特定とまでは至っておりませんが、これで一旦解決と判断しました。

情報提供をしてくださった皆様、ありがとうございました。

投稿2019/02/20 09:54

yosuke_ir

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問