問題タブ [mysqladmin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - mysql スリープによる 30 秒の応答時間を解決する方法は?
私は本当に困惑している状況にあり、誰も問題が何であるかを知らないようです.
mysql サーバーに接続する php/Laravel で書かれた Web サイトがあります。API エンドポイントを数回非常に高速で呼び出すと (ウェブサイトのボタンを約 10 ~ 15 倍高速でクリックすることによって)、最後の数回は呼び出しに非常に時間がかかります。通常は約 200 ミリ秒続くと、突然 30 秒の倍数になります。つまり、1 回の呼び出しに 30 秒、別の 1 回 (またはそれ以上) の呼び出しに 60 秒、別の 1 回または複数回の呼び出しに 90 秒かかる、というようになります。
最初は php かもしれないと思ったmax_execution_time
ので、それを 15 に設定しました。残念ながら、変更はありませんでした。呼び出しには 30 秒の倍数がかかります。さらに、それが問題になる場合はエラーが返されますが、この場合は正しい 200 応答が得られます。
いくつかいじった後watch -n 0.3 "mysqladmin processlist"
、mysqlが原因であるかどうかを確認するために走りました。長時間の通話中に、次のように表示されます。
これが何であり、なぜそれが起こるのか正確にはわかりません。mysql がハングしている可能性があると考えたので、php の mysql クエリを syslog で囲み、mysql 呼び出しでコードが実際にハングするかどうかを確認しました。
しかし、そうではないようです。「スリープ」時に mysqladmin プロセスリストにクエリが表示されていても、BEFORE
およびsyslog は常に互いの直後に表示されます。AFTER
さらに、ご覧のとおり、これは非常に単純な読み取りクエリであるため、ある種の mysql ロックが問題になることはないと思います (ロックは書き込みでのみ使用されると思うため)。
そして、この時点から、これをデバッグする方法についてちょっと迷っています。これらの結果が何を教えてくれるのか、この問題の解決策をどこで見つけることができるのか、誰か知っていますか? すべてのヒントは大歓迎です!
[追伸: セットアップに関する追加情報] セットアップは上で説明したよりも少し複雑ですが、それは関係ないと思うので、その情報は最後に取っておきます。実際には、前にロードバランサーを備えた 2 つの Ubuntu 16.04 サーバーがあります。2 つのサーバーには両方とも、ある種のマスター/マスター同期モードにある mysql サーバーが含まれています。私は Linux で非常に快適に感じていますが、私はこれを設定しておらず、システム管理者でもないので、そこに何かが欠けている可能性があります。このセットアップを管理している担当者に尋ねたところ、問題はコードにあるに違いないとのことでした。それがどこにあるのかはわかりません。
また; すべてのヒントは大歓迎です!
mysql - bash シェル スクリプトを使用して一時的な root MySQL パスワードを変更するにはどうすればよいですか?
MySQL デーモンの起動時に作成される一時的な root パスワードを変更する必要があります。問題は、一時パスワードに、エスケープする必要のある奇妙な文字 (左右の括弧など) が含まれていることです。現在、一般的に文字をエスケープする方法に関するいくつかの投稿 (ここ、ここ、ここ) がありますが、この投稿は bash スクリプトを使用して、特殊文字を含む可能性がある一時的な MySQL ルート パスワードを変更するという文脈にあります。
現在、私のスクリプトは次のようになっています。
一時パスワードは次のようになる場合があることに注意してください。
- BYkc*),ZM3-_
ターミナルで次のように入力すると、機能します。
しかし、スクリプト内では失敗します。$PW
以下は、成功せずに一重引用符を配置しようとしたいくつかの方法です。
mysqladmin -u root -p"'$PW'" password aaBB@@cc1122
mysqladmin -u root -p\''$PW'\' password aaBB@@cc1122
mysqladmin -u root -p"$PW" password aaBB@@cc1122
mysqladmin -u root -p"\"$PW\"" password aaBB@@cc1122
私が間違っていることについてのアイデアはありますか?