mysql 1040エラーを解決するToo many connectionsの方法
4376 ワード
公式文書からlinux上にコンパイルされているmysqlのデフォルトの接続が100個であることが分かります。これはウェブサイトの需要にとっては十分ではありません。mysql公式はmax_を修正する必要があると教えてくれました。connectionsの値はどうやって修正しますか?2つの方法があります。1、プロファイルの修正/etc/my.cnfというファイルは、[mysqld]にmax_を追加しました。connections=Nがない場合は、このファイルをコンパイルしてください。ソースの中のsupport-filesフォルダから必要な*.cnfファイルをコピーしてください。私はmy-medium.cnfを使っています。中型サーバーの配置です。例えば、私の「mysqld」の内容は以下の通りです。
1.mysqlのmax connections設定の問題かもしれません。2.複数のinsertの可能性があります。udate操作はsessionをオフしていません。springにtractionサポートを配置する必要があります。
解決:1.tomcat内のsessionのtime-outを修正する時間は20に減少しました。2.処理量が大きいデータベースに対してinsertやudateの操作に対してtrnsactionサポートを提供します。========================================================================================================================================establishment of connection、message from server:「Too many connections」
理由:
あなたのmysqlインストールディレクトリのmy.iniに設定されている同時接続数が少なすぎたり、システムが繁忙で接続数がいっぱいになります。
解決方法:
MYSQLインストールディレクトリを開けてMY.INIを開けてmax_を見つけます。connections(約93行目)デフォルトは100で、一般的に500~1000に設定したほうがいいです。mysqlを再起動すると1040エラーが解決されます。max_connections=1000
必ずMYSQLを再起動してから有効になります。
CMD->
net stop mysql
net start mysql
innodb_の変更についてロゴfile_size後にmysqlを起動できない問題
innodb_ブザーpool_size=768ミnnodb_ロゴfile_size=256 Minnodb_ロゴブザーsize=8 Minnodb_additional_mem_pool_size=4 Minnodb_flaushロゴat唵trx_comit=0 innodb_スリーロード.concurrency=20以上はinnodbエンジンの初期最適化であり、innodbを更新していることがわかった。ロゴfile_size=256 Mの時に問題が発生しました。これを加えると起動できなくなります。
STOPサービスが先であることを知ってから、元のファイルを削除します。
ib_を削除しますlogfile 0,ib_logfile 1……ib_logfilenはオプションを再オープンし、起動に成功しました。
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 160M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
max_connections=1000
はmysqlに対してあまり詳しくないので、多くのパラメータは修正されていません。ははは2、mysqldスクリプトを使わずに自動的に起動するユーザ。MYSQL_を修正しますHOME/bin/mysqld_safeファイル:たとえば/usr/local/mysql/bin/mysqld_safeこのファイルgrep-n'max_connection$M YSQL_HOME/bin/mysqld_safe対応行番号のmax_を修正する。connectionsパラメータ値以上の方法はインターネットのやり方を参考に書いたものです。方法二:PHPマニュアルの中でmysqlについて探してみます。connectとmysql_pconnectの資料は、phpマニュアルの中でこの二つの関数について説明します。connect関数原型:resource mysql_connect([string server],string username[,string password],book new_link[,int client_]flags"")))は、成功したらMySQL接続IDを返します。失敗したらFALSEに戻ります。説明:mysql_connect()MySQLサーバへの接続を確立します。オプションパラメータが提供されていない場合は、以下のデフォルト値を使用します。server='local host:3306'、username=サーバプロセスの所有者のユーザ名、password=空のパスワードです。同じパラメータで2回目にmysqlを呼び出したらconnect()は、新しい接続が確立されず、すでに開いている接続識別子を返します。パラメータnew_linkはこの行為を変えてmysql_connect()はいつも新しい接続を開いて、mysql_さえもします。connect()は前で同じパラメータで呼び出されたことがあります。パラメータclient_flagsは以下の定数の組み合わせとすることができます。MYSQL_CLIENT_COMPRESS、MYSQL_CLIENT_IGNORE_SPACEまたはMYSQL_CLIENT_INTERS IVE注:new_linkパラメータはPHP 4.2.0から利用できます。clientflagsパラメータはPHP 4.3.0から使用できます。スクリプトが終了すると、サーバへの接続が閉じられます。以前にmysqlを呼び出した場合を除きます。クローズド()をオフにします。mysqlpconnect:関数プロトタイプ:reource mysql_pconnect([string server],string username[,string password],int client_flags'』)は、成功すれば、正しいMySQLの永続的な接続識別子を返します。エラーが発生したら、FALSEに戻ります。説明:mysql_pconnect()MySQLサーバへの接続を確立します。オプションパラメータが提供されていない場合は、以下のデフォルト値を使用します。server='local host:3306'、username=サーバープロセスの所有者のユーザ名、password=空のパスワードです。clientflagsパラメータは、以下の定数の組み合わせとすることができます。MYSQL_CLIENT_COMPRESS、MYSQL_CLIENT_IGNORE_SPACEまたはMYSQL_CLIENT_INTERS IVEserverパラメータは、ポート番号、例えば「hostname:port」、または本マシンソケットの経路、例えば「:/path/to/socket」を含んでもよい。注:「:ポータブル」へのサポートは3.0 B 4版です。「:/path/to/socket」へのサポートは3.0.10版で追加されました。両者の違い:mysqlpconnect()とmysql_connect()は非常に似ていますが、二つの大きな違いがあります。まず、この関数は接続時に、同じホスト上で同じユーザ名とパスワードですでに開いている接続を探してみます。見つけたら、この接続識別子を返して、新しい接続を開けません。次に、スクリプトの実行が完了すると、SQLサーバへの接続は閉じられません。この接続は今後の準備のために開かれます。closeは閉じられません。mysqlからです。pconnect()で作成した接続)。オプションパラメータclient_flagsはPHP 4.3.0版から利用できます。この接続は「持続的」と呼ばれる。ちょっと結びます。あなたのシステムはToo many connectionsエラーが発生しないことを保証します。2点に注意してください。1.あなたのapacheの最大プロセス数はmysqlの最大接続数を超えないようにしてください。2.プログラム内で多すぎるmysqlを使わないでください。pconnectは同じデータベースサーバに接続されています。これは良い符号化習慣と規範が必要です。特に絶えずにシステムに新しい機能を追加します。システムアーキテクチャと符号化規範を重視しないと、システムの複雑さがある程度になります。システム全体がメンテナンスできなくなりました。問題が発生した時に解決するのは大変です。解決方法は修正/etc/mysql/my.cnfです。次の行を追加します。set-variable=max_connections=500または起動コマンドにパラメータmax_を付加するconnections=500は最大接続数を修正して、mysqlを再起動します。デフォルトの接続数は100です。少なすぎます。だから間違いが発生しやすいです。以上は宋利興のコラムから以下のように補足します。1.mysqlのmax connections設定の問題かもしれません。2.複数のinsertの可能性があります。udate操作はsessionをオフしていません。springにtractionサポートを配置する必要があります。
解決:1.tomcat内のsessionのtime-outを修正する時間は20に減少しました。2.処理量が大きいデータベースに対してinsertやudateの操作に対してtrnsactionサポートを提供します。========================================================================================================================================establishment of connection、message from server:「Too many connections」
理由:
あなたのmysqlインストールディレクトリのmy.iniに設定されている同時接続数が少なすぎたり、システムが繁忙で接続数がいっぱいになります。
解決方法:
MYSQLインストールディレクトリを開けてMY.INIを開けてmax_を見つけます。connections(約93行目)デフォルトは100で、一般的に500~1000に設定したほうがいいです。mysqlを再起動すると1040エラーが解決されます。max_connections=1000
必ずMYSQLを再起動してから有効になります。
CMD->
net stop mysql
net start mysql
innodb_の変更についてロゴfile_size後にmysqlを起動できない問題
innodb_ブザーpool_size=768ミnnodb_ロゴfile_size=256 Minnodb_ロゴブザーsize=8 Minnodb_additional_mem_pool_size=4 Minnodb_flaushロゴat唵trx_comit=0 innodb_スリーロード.concurrency=20以上はinnodbエンジンの初期最適化であり、innodbを更新していることがわかった。ロゴfile_size=256 Mの時に問題が発生しました。これを加えると起動できなくなります。
STOPサービスが先であることを知ってから、元のファイルを削除します。
ib_を削除しますlogfile 0,ib_logfile 1……ib_logfilenはオプションを再オープンし、起動に成功しました。