質問 > 管理機能 > EC-CUBE2.13冗長化構成においてconstration violationが頻発する |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
dogfeet |
投稿日時: 2021/9/27 17:37
対応状況: −−−
|
新米 登録日: 2021/9/27 居住地: 投稿: 5 |
EC-CUBE2.13冗長化構成においてconstration violationが頻発する [EC-CUBE] 2.13.5
[OS] Amazon Linux AMI [PHP] PHP5.6 [データベース] mysql5.6 [WEBサーバ] apache2.4 [現象] 現状、 ウェブサーバー × 3 DBサーバー × 1 Elasticache Redis (セッション管理) でEC-CUBE2.13.5を動かしています。 ウェブサーバーのうち1台は、管理画面&決済(/shopping/load_payment_module.php)で使用、他の2台はそれ以外のページで使用しています。 (aws albでターゲットグループを2つ作成し、パスにて振り分け) 通常時は問題ないのですが、アクセスが集中すると dtb_order_tempのorder_temp_idの書き込みでconstration violationが頻発し、Lock wait timeout exceeded; try restarting transactionが連続して起こり、 管理画面は閲覧できるのですが、フロント側がBad Gatewayで閲覧できなくなります。 具体的には、 LC_Page_Shopping.php > lfRegistData > $objPurchase->saveOrderTemp の内の INSERT INTO dtb_order_temp 処理部分でconstraint violationが起こり、 LC_Page_Cart.php > lfSetCurrentCart > lfUpdateOrderTempid の内の UPDATE dtb_order_temp 処理部分でLockがかかってしまいます。 order_temp_idの生成部分も見て、被ることはないかと思うのですが、この様な現象は起こり得るものなのでしょうか? 何か考えられる事などありましたら、お教えいただけますでしょうか。 よろしくお願い致します。 |
nanasess |
投稿日時: 2021/9/27 18:02
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2313 |
Re: EC-CUBE2.13冗長化構成においてconstration violationが頻発する あまり見たことない現象ですが、 order_temp_id のもとになる uniqid() 関数に引数 prefix を指定すると良いかもしれません
https://github.com/EC-CUBE/ec-cube2/blob/master/data/class/util/SC_Utils.php#L923 https://www.php.net/uniqid prefix に $_SERVER や環境変数から取得したホスト名を指定してみてはいかがでしょうか? |
dogfeet |
投稿日時: 2021/9/27 18:46
対応状況: −−−
|
新米 登録日: 2021/9/27 居住地: 投稿: 5 |
Re: EC-CUBE2.13冗長化構成においてconstration violationが頻発する ご返信ありがとうございます。
取り急ぎ 引用:
としてみました。 ただ、元のソースのままでも被る事はそうそうないと思うのですが何故でしょうかね。。 /cart/ > /shopping/index.php > /shopping/deliv.php > /shopping/payment.php > /shopping/confirm.php と遷移する中、各ページ毎にdtb_order_tempへの書き込みが行われているようですが、 cartページから先に進むタイミングで常に新しいorder_temp_idを発行し、 /shopping/index.php /shopping/deliv.php /shopping/payment.php で入力した値は全てセッションに保存し、/shopping/confirm.phpにて、次へ、または購入完了ボタンをクリックしたタイミングで保存したセッションデータを使って 初めてdtb_order_tempへの書き込みが行われるよう変更してみようと思うのですが、この手のエラーに対して効果はありそうでしょうか? (※dtb_order_tempにたまるデータ量は増えそうですが、適宜クーロンなどで削除処理しようと思います) また、他でもEC-CUBE2系の冗長化に関して気をつけた方がいい点などございましたらご教示いただければ幸いです。 |
nanasess |
投稿日時: 2021/9/28 0:17
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2313 |
Re: EC-CUBE2.13冗長化構成においてconstration violationが頻発する 引用:
そうなんですよね。。。 あまり遭遇したことのない現象で、どうしたものかなと思っております。 トラフィックの多いサイトは、ほとんど PostgreSQL で運用していたため、 MySQL のナレッジが少ないこともありますが。 引用:
経験上、 セッションデータはよく不整合が発生するので、あまり依存しすぎるのは良くないと思っています。 引用:
2系に限りませんが、共有ストレージを使用すると性能が出ないことが多いです。 すでに対策されているかもしれませんが、Webサーバーでも速いストレージに載せることをおすすめします (2.13の場合は composer を使用していないので、あまり問題が出ないかもしれません) |
dogfeet |
投稿日時: 2021/9/28 19:34
対応状況: −−−
|
新米 登録日: 2021/9/27 居住地: 投稿: 5 |
Re: EC-CUBE2.13冗長化構成においてconstration violationが頻発する ありがとうございます!
jmeterなどでシナリオを走らせて同じ現象を再現し、何かわかったらまた報告させていただきます。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |