sql >> データベース >  >> RDS >> Mysql

MySQLエラー接続が多すぎます

    共有ホスティングプロバイダーは通常、同じユーザーに対してかなり少量の同時接続を許可します。

    あなたのコードは:

    • MySQLサーバーへの接続を開きます
    • それは何かをする(ページを生成する)
    • ページの最後で接続を閉じます。

    ページの最後で実行する最後のステップは、必須ではありません。 :( mysql_closeを引用 のマニュアル):

    ただし、とにかく永続的な接続を使用するべきではないことに注意してください...

    2つのヒント:

    • mysql_connectを使用します mysql_pconnectの内部 (すでにOKです)
    • mysql_connectの4番目のパラメータをfalseに設定します(デフォルト値なので、すでにOKです) :(マニュアルを引用):


    では、何が問題を引き起こす可能性がありますか?

    複数のページに並行してアクセスしようとしている可能性があります(たとえば、ブラウザの複数のタブを使用して) 、Webサイトを同時に使用する複数のユーザーをシミュレートしますか?

    同時に多くのユーザーがサイトを使用していて、mysql_connectの間のコードがある場合 接続を閉じるには多くの時間がかかります。これは、同時に多くの接続が開かれることを意味します...そして制限に達します :-(

    それでも、アプリケーションの唯一のユーザーであるため、最大200の同時接続が許可されていることを考えると、何か奇妙なことが起こっています...


    さて、「接続が多すぎる」について考えてみましょう。 "と"max_connections 「...

    正しく覚えていれば、max_connections あなたの接続数を制限しません MySQLサーバーに対して開くことができますが、接続の総数 サーバーに接続している人なら誰でもそのサーバーに開くことができます 。

    接続が多すぎます に関するMySQLのドキュメントを引用します :

    したがって、実際には、問題はあなたやあなたのコードに起因するものではない可能性があります(実際には問題ないように見えます) :そのMySQLサーバーに接続しようとしているのはあなただけではないというのは「ただ」かもしれません(「共有ホスティング」を思い出してください) 、そして同時にそれを使用している人が多すぎること...

    ...そして私が正しくてそれなら 、問題を解決するためにできることは何もありません。そのサーバー上にデータベース/ユーザーが多すぎて、そのmax_connectionである限り、 200に設定されている場合、あなたは苦しみ続けるでしょう...


    補足として:GoDaddyに戻ってそれについて尋ねる前に、誰かが私が今言ったことを検証できればいいのですが^^



    1. sqlalchemyによる実行中に複数のステートメントの実行を有効にする

    2. 「SQLServerがコンポーネント「アドホック分散クエリ」のステートメント「OpenRowset/OpenDatasource」へのアクセスをブロックした」を修正

    3. SQLWHERE列=すべて

    4. 重複する行を別のテーブルに挿入するための挿入トリガーの前