「MySQL Warning: Can’t create a new thread」エラーは、MySQL が新しいスレッドを作成できない場合に発生するエラーです。

Warning: mysql_connect(): Can't create a new thread (errno **);
if you are not out of available memory,
you can consult the manual for a possible OS-dependent bug...

利用しているVPSサーバではプロセス数やメモリ量が厳しく制限されているため、プロセスやメモリ制限によりMySQLが使用するスレッドが制限されてしまうと、新しい接続も受け入れることができなくなり、エラーを吐き出してサイトが死んでしまうようです。




googleのキャッシュにもエラーが表示していた

このmysqlの接続エラー画面が頻繁に出てしまっていたようで、恥ずかしながらgoogleのキャッシュにまでこれが表示される状態になってしまいました。

googleで「mysql If you are not out of available memory」と検索をすると、私と同じようにサイトの中身をこのエラー画面にされてしまっているサイトもチラホラ見られるので、似たような問題でお悩みの方も多いかもしれません。

一旦、googleのキャッシュは再度正常なものに変わったからよかったものの、このままでは再発が目に見えているので、早速プログラムを見直すことにしました。

プログラムでメモリ開放を

メモリ不足の原因は、自作PHP&SQLのプログラムにあるのは想像がついていたので、DBコネクションを適切に切断していなかったり、SQLの結果を保持したままメモリを解放をしてない部分を探し、プログラム側で明示的に開放しておくようにしました。

mysql_free_result();
mysql_close();

それ以降、だいぶ落ち着いてきたようで、体感でもサイト表示が早くなったような気がしております。

おわりに

メモリの使用量を削減し、プログラムのパフォーマンスを向上させるには、メモリを適切に解放することが大切ですが、適当に開放してしまうと、必要な変数を不意に消してしまったりと、バグのリスクも高まったり、パフォーマンスが低下したりする可能性もあるのでご注意ください。

もうすぐ6年目となるので、もう少々プログラムをしっかり勉強したいです。

ABOUT dtn.jp

この運営ブログをみてdtn.jpの運営サイトに興味をお持ちになった方は下記のリンク集からサイトをご参照ください。PHP・SQL・JS・HTML・CSSや様々なAPIでゼロから立ち上げたサイトを複数運営しています。

dtn.jp関連サイト

  • ディレクトリ型検索エンジンdtn大手は全てサービスを終了してしまい、中小でも運営を継続するところがほとんど無くなったディレクトリ型検索エンジンを、2002年から細々運営しております。今も申請されたサイトは実際に管理人が訪問して確認後に登録しています。是非登録どうぞ。
  • 猫ネコサーチエンジン猫・ペットサイト専用のディレクトリ型検索エンジンです。登録サイトはサイトのスクリーンショット付きでカテゴリに掲載をいたします。
  • 画像掲示板の泉画像・YouTube・ニコニコ動画・Tiktokの貼り付けが可能な匿名画像掲示板です。27ジャンルに分かれた掲示板に、それぞれ100スレッドまで立てることが可能です。
  • ツイータンTwitter APIを使って10分おきに収集したTwitterトレンドワード・人気ハッシュタグデータを、月別に集計してランキング形式で公開しています。年間トレンドワードも公開中。
  • Keyword Tool++Yahooショッピングや楽天のトレンドワードデータを日次収集し、EC系の人気キーワードをラインキング形式でご紹介しています。各ワードの検索ボリュームや関連語、24か月の検索ボリュームをグラフで確認が可能です。
  • 消費者金融の泉カードローン商品を取り扱う金融業者を一覧で比較可能としたサイトです。カテゴリ別、人気度別、限度額別、金利別に比較可能です。
  • TrendinGファッションブランドを人気アイテムヒット率でランキング化し、一覧でご紹介しているサイトです。

各サイトの開発方法などについて

各サイトの開発方法や運用トラブルについては、当ブログで不定期にご紹介しています。Twitterで新着記事のお知らせもしています。宜しければフォロー下さい。