私は誰かが私を助けてくれることを願っています。MySQLデータベースでは、毎回フラッシュテーブルが必要です。これを解決するために何かスクリプトを書くことはできますか?
現在、私たちのスクリプト(JavaとPHP)がlocalhost mysqlデータベースに接続しようとすると、何度もエラーが発生します。
多くの接続エラーが原因でホスト 'myhost'がブロックされています。 'mysqladmin flush-hosts'でブロックを解除してください。
この問題は、主に午前中の早朝に発生しているようです。なぜこれが起こっているのかを調べるために多くの検索を行った結果、今度はホスティング会社がバックアッププロセスを実行していることが原因である可能性があるという結論に至りました。私の理論は、このバックアッププロセス中(これは私たちの最も忙しい時期です)、すべての接続を使い切ってしまい、このエラーが発生するということです。
私はこれらのバックアップが発生する時間を変更することについて私たちのホストに話しましたが、これは不可能であり、単にバックアップが開始されていることを保証するものです重要な期間はバックアップが発生した正確な時期であることを通知した)。私は、サーバーに接続している
ものがあります:
- PHPのウェブサイトmysqlデータベースを使用してユーザーの資格情報をチェックし、未処理のメッセージをチェックします。
私たちは通常、いつでも300〜600のソケット接続を開き、これらの平均動作は約1〜3回/秒です。
私は、これらの問題を自動的に解決するのに役立つかもしれないことを願って、いくつかのmysqlプラグインと共にいくつかのmysqlプラグインをインストールしました。
私の質問は以下のとおりです。
- は、この問題が発生した場合、私は自動
- をクリアするためにデータベースをフラッシュすることができますので、私は自動ポーリングにMySQLデータベースを行うことができるものがあり、これは、サーバーのバックアップに潜在的にも関係しています。バックアップが発生している間に95%の時間が発生するのは偶然のようです。
- その他の参考になるアイデア。他のウェブサイトへのリンク、または私がホストに手伝ってくれる質問。
私たちは現在、PHPバージョン5.2.6-1 + lenny9 Apacheで動作しています。
さらに詳しい情報が必要な場合は、私にお知らせください。ありがとう。
UPDATE:私は共有仮想ホスト上で動作し、私は自分のデータベースクラスでこのコードを持っているように私は私のウェブサイトの接続を閉じかなり確信しています
function __destruct() {
@mysql_close($this->link);
}
私は私が使用していないかなり確信しています@mysql_connectコマンドをdbに接続すると、PHPスクリプトを介した永続的な接続が可能になります。
UPDATE: max_connectionsの制限を100から200に変更し、php.iniのmysql.persistant変数をOnからOffに変更しました。今度は2日間、サーバを実行し、主にmySqlデータベースへの接続が完了しました。私はサーバーに1GBのRAMを1つ持っていますが、それに近づくようなことはありません。サーバーに正常に送信された最後のパケットが0だったあまりにも多くの接続
- のSQLExceptionのようなものを取得するログに記録しますミリ秒前。ドライバはサーバからパケットを受信していません。
- SQLException:null、サーバーからのメッセージ:「新しいスレッド(errno 12)を作成できません。使用可能なメモリが不足している場合は、OSに依存するバグのマニュアルを参照してください」
- SQLState ::のSQLException:HY000、VendorError ::のSQLException:1135
ホスティング会社を変更し、完全停止します。 – ajreal
必要に応じてコードを見て、接続を明示的に閉じることができます。 –
本当に、私のホスティング会社をベストアイデアに変えていますか?顧客の多くがIP経由でソケットに接続しているため、ホストの変更は苦しいことでしょうか? Salman A、明示的に近い接続を意味しますか?各PHPファイルの最後に、クローズを呼び出すフッタが含まれています。そして私のJavaでは、私は各クエリのために接続を開いたままにしておきます。 – dreza