Bug(バグ) #1779
日記のデータ量が多いSNSで日記検索を行うとサーバが高負荷状態になる [仕様バグ]
100%
説明
日記のデータ量が多い状態で日記検索を行うと、サーバに非常に負荷をかけてしまう。
大規模なSNSの運営に対応させるため、改善を行うべき。
改善案¶
- 日記検索の対象期間を管理画面・config で設定できるようにし、対象データを絞る
- そもそも日記検索機能自体を「使用しない」選択が出来るようにする
実装案¶
- 既存の「日記検索機能」のON/OFFを設定できるようにする
- 新規に「日記検索対象期間機能」を追加
- 新規の「日記検索対象期間機能」のON/OFFを設定できるようにする
- 新規の「日記検索対象期間機能」の検索期間を設定できるようにする
- 「設定」は設定ファイルで行えるようにする
実装内容¶
実装案との変更点- 各設定は設定ファイルではなく管理画面で行えるようにする
- 「日記検索機能」「日記検索対象期間機能」の設定は管理画面での日記検索(/pc_backend.php/monitoring/diary)には反映させない
- 「日記検索対象期間機能」の入力は0以上の数値(整数)とする
関連するチケット
関係しているリビジョン
add enable/disable setting for diary search (refs #1779)
fixed coding standards and remove unnecessary code (fixed #1779)
fixed complicated code (fixed #1779)
fixed using pc_backend settings to enable/disable search (fixed #1779)
fixed English and the order of settings (fixed #1779)
fixed English (fixes #1779)
add default value to SnsConfig (fixes #1779)
fixed not to reflect to pc_backend diary search (fixes #1779)
fixed to validate input value of search period (fixes #1779)
fixed English and changed validator to use Integer (fixes #1779)
Merge pull request #10 from nise-nabe/search-enh
fixed English and changed validator to use Integer (fixes #1779)
履歴
#1 Kousuke Ebihara が13年以上前に更新
- 優先度 を Normal(通常) から High(高め) に変更
#2 Kousuke Ebihara が13年以上前に更新
- [QA]バグ通知済 を いいえ にセット
#3 Kousuke Ebihara が13年以上前に更新
- [QA]バグ通知済 を いいえ から はい に変更
#4 Shingo Yamada がほぼ13年前に更新
- 担当者 を Rimpei Ogawa にセット
#5 Shingo Yamada がほぼ13年前に更新
- 期日 を 2011-05-27 にセット
#6 Yuya Watanabe がほぼ13年前に更新
- ステータス を New(新規) から Pending Review(レビュー待ち) に変更
- 担当者 を Rimpei Ogawa から Yuya Watanabe に変更
- 進捗率 を 0 から 50 に変更
下記のコミットで修正しました。
https://github.com/nise-nabe/opDiaryPlugin/commit/66843eeb76fe64b9b409f39e4e736c223fc0dc28
具体的には,以下の点を修正しました。
・日記検索のON/OFF
・日記検索がOFFの場合にPC/モバイルともに検索窓を表示しない
・日記検索がOFFの場合にPC/モバイルともに検索ページが404を返す
・日記検索対象期間のON/OFF
・日記検索対象期間の設定
・日記検索対象期間がONの場合に検索結果を指定された期間以内の日記で返す
#7 Yuya Watanabe がほぼ13年前に更新
設定関連を管理画面で行えるように修正しました。
https://github.com/nise-nabe/opDiaryPlugin/compare/master...dccdd3bf7aeabe19845c
#8 Rimpei Ogawa がほぼ13年前に更新
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
- 対象バージョン を v1.3.2 にセット
#9 Yuya Watanabe がほぼ13年前に更新
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
コメント内容を反映した修正を行いました。
https://github.com/nise-nabe/opDiaryPlugin/compare/master...e16a88ed
#10 匿名ユーザー がほぼ13年前に更新
更新履歴 e16a88ed93683c6863c5f60e687588c134922b5a で適用されました。
#11 Naoya Tozuka がほぼ13年前に更新
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
英文の中で、他動詞であるenableを形容詞のように用いるのは誤りです。
有効になっている、という状態を表すのであれば enabled としてください。
#12 Yuya Watanabe がほぼ13年前に更新
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
#13 Yuya Watanabe がほぼ13年前に更新
更新履歴 d14a6e3c91769149a53aa8171c5f63ad9365dafc で適用されました。
#14 Rimpei Ogawa がほぼ13年前に更新
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
SnsConfig の設定値取得時にデフォルト値を設定していない箇所があるため、DB上に設定値がない場合にデフォルト値が適用されていない箇所があります。
例えば、 Doctrine::getTable('SnsConfig')->get('op_diary_plugin_search_enable')
としている箇所はDB上に値がない場合に null となり、結果検索機能がデフォルトで使用できない状態になっています。
SnsConfigTable の仕様がいまいちかもしれないですが、呼び出し箇所全てに第2引数のデフォルト値を設定するようにしてください。
#15 Rimpei Ogawa がほぼ13年前に更新
テストを実施してもらえるようなので master ブランチに変更をマージしました。
#16 Yuya Watanabe がほぼ13年前に更新
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
SnsConfigのデフォルト値について指摘部分の修正を行いました。
#17 Yuya Watanabe がほぼ13年前に更新
更新履歴 f99cfd02d23281cd092114def93aa004cdfd5f0a で適用されました。
#18 Rimpei Ogawa がほぼ13年前に更新
更新履歴 9e9e323c1dca3953bf37713554968b1802725365 で適用されました。
#21 Yuya Watanabe がほぼ13年前に更新
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
- コメント19 入力可能な最小値を設定する
- コメント20 ページャ取得の際にpc_backendについては検索対象期間を反映させない
#22 Yuya Watanabe がほぼ13年前に更新
更新履歴 63499d56ec580c42e7fd0010ba330e6218de02e6 で適用されました。
#23 Yuya Watanabe がほぼ13年前に更新
更新履歴 78f377a5a97945afae0cb75a7a4023e18a93dc97 で適用されました。
#24 Rimpei Ogawa がほぼ13年前に更新
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
管理画面で入力する search_period について、整数以外が入力できる必要はないと思いますので sfValidatorNumber ではなく sfValidatorInteger を使ってください。また、0の入力を許可するのであれば "Please input more than 0." の文言を修正してください。
#25 Yuya Watanabe がほぼ13年前に更新
コメント24の指摘を下記pull requestにて修正しました。
#26 Yuya Watanabe がほぼ13年前に更新
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
#27 Yuya Watanabe がほぼ13年前に更新
更新履歴 9b6863d2359ad7e73ee5eaf3473e10c842116e86 で適用されました。
#28 Rimpei Ogawa がほぼ13年前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
修正確認しました。
#29 Rimpei Ogawa がほぼ13年前に更新
- ステータス を Pending Testing(テスト待ち) から Pending Review(レビュー待ち) に変更
- 進捗率 を 70 から 50 に変更
更新履歴 33acfb446ccf4ab7aef7fef014954fb0b80c5d40 で適用されました。
#30 Rimpei Ogawa がほぼ13年前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
#31 Mutsumi Imamura がほぼ13年前に更新
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 70 から 100 に変更
テスト完了しました。問題ありません。