web-dev-qa-db-ja.com

断続的な404エラー、書き換え規則、およびBBPress

私はBBPressに関連している可能性がある断続的な404の問題をデバッグしようとしています。断続的な404やBBPressに関する他のレポートをいくつか読んだことがありますが、どれも私の状況に正確には当てはまらないので、新しい質問をします。

私のウェブサイトのメインページは断続的に404でロードされます。断続的なアクセスの問題は一度に10秒から3分の間持続するように見えます。これが起こると、誰もがそのサイトにアクセスしようとしていることになります(ホスティングサービスの技術サポートを受けている間に電話で確認されます)。この時間帯にサイトの他のページが正しく読み込まれるように見えます。更新を押すと、最終的にページが正しく再ロードされます。

書き換え規則を調べるためにQuery Monitorを使用しています。ページが正しくロードされていない場合の結果は次のとおりです。

Request account-2/conscious-business-design-dashboard
Matched Rule    [^/]+/([^/]+)/?$
Matched Query   attachment=conscious-business-design-dashboard
Query String    attachment=conscious-business-design-dashboard
Query Vars  attachment  conscious-business-design-dashboard
comments_per_page   50
name    conscious-business-design-dashboard
order   DESC
posts_per_page  10
update_post_meta_cache  1
update_post_term_cache  1

ページが正しく読み込まれたときの結果は次のとおりです。

Request account-2/conscious-business-design-dashboard
Matched Rule    (.?.+?)(?:/([0-9]+))?/?$
Matched Query   pagename=account-2%2Fconscious-business-design-dashboard
&page=
Query String    pagename=account-2%2Fconscious-business-design-dashboard
Query Vars  comments_per_page   50
name    conscious-business-design-dashboard
order   DESC
pagename    conscious-business-design-dashboard
posts_per_page  10
update_post_meta_cache  1
update_post_term_cache  1
Queried Object  
Single Page: #225 (WP_Post)

これは404の間に実行されている最も関連した問い合わせです:

SELECT wp_posts.*
FROM wp_posts 
WHERE 1=1 
AND wp_posts.post_name = 'conscious-business-design-dashboard'
AND wp_posts.post_type = 'attachment' 
ORDER BY wp_posts.post_date DESC 

これは、ページが正常にロードされたときに実行されるクエリです。

SELECT wp_posts.*
FROM wp_posts 
WHERE 1=1 
AND (wp_posts.ID = '225')
AND wp_posts.post_type = 'page' 
ORDER BY wp_posts.post_date DESC 

BBPressのコードを見ると、書き換え規則をここで確認できます。

// Rewrite rule matches used repeatedly below
    $root_rule    = '/([^/]+)/?$';
    $feed_rule    = '/([^/]+)/' . $feed_slug  . '/?$';
    $edit_rule    = '/([^/]+)/' . $edit_slug  . '/?$';
    $paged_rule   = '/([^/]+)/' . $paged_slug . '/?([0-9]{1,})/?$';

しかし、すべてのナメクジがデータベースに正しく設定されているため、それらがどのように破損しているのかを特定することはできません。 Query Monitorの結果にリストされている正確な書き換え規則が、コアコードまたはプラグインコードのどちらにも見つかりません。

追加情報:

  • このサイトはSSLを使用しており、かなりパーマリンクが有効になっています。
  • SSLを有効にしてもしなくても、テストサーバーの別のホスティングサービスに問題を再現することはできませんでした。プライマリホストのステージングサーバにも404が表示されていません。テストサーバーはVPSですが、その他のサイトも十分に稼働しており、全負荷に近いものです。プライマリサーバーへの負荷は直接小さいですが(同時に数十人のユーザー)、プライマリサイトは共有ホスティングです。
  • 私は過去24時間に2回正確に3時間のダウンタイムを示すuptimerobotモニタリングをしていますが、uptimerobotに予想される5分間のアクセスをアクセスログに表示していないので、これらの数値がどれほど正確かはわかりません。 404sはすべてのユーザーに渡って一時的で時間的にリンクされているように見えるので、 CPU過負荷の可能性を排除しようとしています 。みんな、そして突然みんなのためにダウンしています。)
  • プライマリサイトはメンバーシップサイトでありライブです。したがって、「すべてのプラグインを無効にする」ことは実際には可能ではありません(最初にフォーラムを廃止します)。 404を再び起こさせる。メンバーシップルール(MemberPress)は現在かなりのパーマリンクに頼っています。メンバーシッププラグインは、MemberPressとLearnDashです。
  • このサイトではBuddyPressも運営していますが、私が指摘したいくつかの研究も関係している可能性があります。場合によっては、 特定の順序でページにアクセスすると、BuddyPressの書き換え規則404 が発生することがありますが、私の場合は、この問題が比較的確実に発生します。訪問のページ順には依存しません。 (404 Error Monitorからの参照元ログがあります。)
  • 私はプラグインQuery Monitor(この質問のデータを提供する)と404 Error Monitor(サイトのホームページ以外のページを404と表示しますが、アクセスログはメインページに404のみを表示する)をインストールしました。彼らのサポートフォーラムがWPの現在のバージョンとの非互換性を示しているので、私はDebug Barをインストールしませんでした。
  • 問題がWebサイトのメインページに限定されているかどうかは100%確信できません。アクセスログに「はい」と表示されます。 404エラーモニターは404を経験している他のページの大きなリストを表示しています。 Ithink他のページで見たことがありますが、誓うことはできません。メインページが私とテクニカルサポートの両方のためにダウンしていた正確な時点で、私はそのサイトの他のページにアクセスできたことを確認することができます。
  • メインページにはnotにBuddyPressまたはBBPressの機能が含まれています。埋め込まれたVimeoビデオ、いくつかのボタン、プレーンテキスト、画像、そしてコンテンツの表示/非表示を行う一連のMemberPressアクセスルールがあります。

さらなるトラブルシューティングのための何か提案はありますか?

1
buzzo

これを引き起こすことができるLearnDashとbbPress/BuddyPressに既知の問題があります、私は私自身同じことに遭遇しました。マデニング!そしてそれは生成されているBPイベントの数に比例するので、あなたがより多くのユーザアクティビティを持っているほど、それはより多く発生します。 LearnDashサポートサイト の詳細はこちら

次のコードを使って修正しました。

// Fix for LearnDash causing 404s on BuddyPress activity (updates, messages)
add_filter( "learndash_flush_rewrite_rules", function( $flush, $post_options ) {
return true;
}, 4, 2 );
0
ChristopherS