国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ バックエンド開発 PHPチュートリアル 実際のプロジェクトで php+redis を使用して HTTP 500: Internal Server Error をトラブルシューティングする方法

実際のプロジェクトで php+redis を使用して HTTP 500: Internal Server Error をトラブルシューティングする方法

May 26, 2018 pm 03:17 PM
http

ユーザー數(shù)は急速に増加し、アクセス數(shù)は短期間で 2 倍になりました。初期のキャパシティ プランニングは比較的良好であったため、ハードウェア リソースはそれをサポートできましたが、ソフトウェア システムには大きな問題がありました。リクエストの 40% が HTTP 500: Internal Server Error を返します

問題の説明
初期の適切な容量計畫により、ユーザー數(shù)は急速に増加し、アクセス數(shù)は短期間で 2 倍になりました。 、ハードウェア リソースはサポートできますが、ソフトウェア システムに大きな問題があります:
リクエストの 40% が Return HTTP 500: Internal Server Error になります
ログを確認(rèn)すると、接続処理でエラーが発生していることがわかりましたPHP の <->
デバッグ処理

初回
最初は根本原因が見つからなかったので、次のようなエラー関連のさまざまな方法を試すことができます:
PHP の數(shù)を増やす接続を増やし、タイムアウトを500ミリ秒から2.5秒に増やします
PHP設(shè)定でdefault_socket_timeoutを無効にします
ホストシステムでSYNクッキーを無効にします
RedisとWebサーバーを確認(rèn)しますファイル記述子の數(shù)を確認(rèn)します
ホストシステムのmbufferを増やします
TCPバックログの數(shù)を調(diào)整します
...

多くの方法を試しましたが、どれも効果がありませんでした

2回目
この問題をプレリリース環(huán)境で再現(xiàn)したいと考えましたが、殘念ながら、おそらくトラフィックが再現(xiàn)できるほど大きくないため、まだ失敗しました

3 回目
コード內(nèi)で Redis 接続が閉じられていない可能性がありますか?
通常、PHP は実行終了時にリソース接続を自動的に閉じますが、古いバージョンではメモリ リークが発生する可能性があるため、安全を期すためにコードを変更して接続を手動で閉じます
結(jié)果はまだ無効です

4回目
不審なターゲット: phpredisクライアントライブラリ
A/Bテストを?qū)g施し、predisライブラリを置き換え、データセンター內(nèi)のユーザーの20%に導(dǎo)入
適切なコード構(gòu)造のおかげで置き換え作業(yè)が完了すぐに結(jié)果が得られます まだ無効ですが、良い面もあります 5回目

Redisのバージョンを確認(rèn)したところ、その時點(diǎn)での最新バージョンでした。は v2.8.9 でした

Redis をアップグレードして試してみてください。アップグレード後もまだ動作しません 大丈夫、楽観視してください。これは Redis バージョンを最新にアップグレードする方法ではありません

6 回目です

たくさんのドキュメントを検索したところ、公式ドキュメントで適切なデバッグ方法を見つけました。 Redis Software Watchdog を開いた後に実行します:

$ redis-cli --latency -p 6380 -h 1.2.3.4
min: 0, max: 463, avg: 2.03 (19443 samples)

Redis ログを表示します:

...
[20398] 22 May 09:20:55.351 * 10000 changes in 60 seconds. Saving...
[20398] 22 May 09:20:55.759 * Background saving started by pid 41941
[41941] 22 May 09:22:48.197 * DB saved on disk
[20398] 22 May 09:22:49.321 * Background saving terminated with success
[20398] 22 May 09:25:23.299 * 10000 changes in 60 seconds. Saving...
[20398] 22 May 09:25:23.644 * Background saving started by pid 42027
...

問題を見つけました:

データを保存數(shù)分ごとにハードディスクにアクセスしているのに、バックグラウンド ストレージをフォークするのになぜ約 400 ミリ秒かかるのですか (上記のログで 1 番目と 2 番目のエントリの時間を確認(rèn)できます)

この時點(diǎn)で、ついにソースを見つけました。問題: Redis インスタンスには大量のデータがあるため、永続化操作ごとにバックグラウンド プロセスをフォークするのに非常に時間がかかり、業(yè)務(wù)內(nèi)でキーが頻繁に変更されるため、永続化が頻繁にトリガーされます。解決策: 永続化には別のスレーブを使用します。このスレーブは実際のトラフィック リクエストを処理しません。唯一の機(jī)能は、以前の Redis インスタンスの永続化操作をこのスレーブに転送することです。明らかに、問題は基本的に解決されていますが、時々エラーが報告されます


7 回目

考えられるトラブルシューティング Redis の遅いクエリをブロックすると、キー * がどこかで使用されていることがわかります。 Redis では、このコマンドは當(dāng)然深刻なブロックを引き起こします。

前回の調(diào)整後、トラフィックが増加し続けた場合でも、問題は解決されました。 、それは耐えることができました

しかし、彼らは新しい問題に気づきました:

現(xiàn)在の方法では、リクエストが來たときにRedis接続を作成し、いくつかのコマンドを?qū)g行してから、リクエストの量が多い場合、この方法では切斷されます。コマンドの半分以上が接続操作の処理に使用されており、ビジネス ロジックの処理を超えて Redis の速度が低下します 解決策: プロキシを?qū)毪贰witter の twemproxy を選択しました。プロキシをインストールするだけで済みます。各 Web サーバーでは、twemproxy が Redis インスタンスとの永続的な接続を擔(dān)當(dāng)し、これにより接続操作が大幅に削減されます

twemproxy にも 2 つの便利な場所があります:

memcached をサポート

キーなどの非常に時間のかかる、または危険なコマンドをブロックできます。フラッシュオール

効果は當(dāng)然完璧で、以前の接続エラーを心配する必要はもうありません


9回目

データシャーディングを渡して最適化を継続します:

異なるコンテキストでデータを分割して分離します

同じデータの一貫したハッシュシャーディングcontext

効果:

各マシンのリクエストと負(fù)荷を削減します

キャッシュの信頼性を向上させます 安全性、ノード障害を心配する必要はありません

以上がこの記事の全內(nèi)容です、皆さんの學(xué)習(xí)に役立つことを願っています。

関連する推奨事項:

PHP で

redis に存在しない 6 桁の亂數(shù)を取得するメソッド

メソッド


redisWeiboメソッドを公開するメッセージキューのPHP実裝

CIフレームワーク(CodeIgniter)の操作redisステップ分析

以上が実際のプロジェクトで php+redis を使用して HTTP 500: Internal Server Error をトラブルシューティングする方法の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

http ステータス コード 520 は何を意味しますか? http ステータス コード 520 は何を意味しますか? Oct 13, 2023 pm 03:11 PM

HTTP ステータス コード 520 は、サーバーがリクエストの処理中に不明なエラーに遭遇し、より具體的な情報を提供できないことを意味します。サーバーがリクエストを処理しているときに不明なエラーが発生したことを示すために使用されます。サーバー構(gòu)成の問題、ネットワークの問題、またはその他の不明な理由が原因である可能性があります。これは通常、サーバー構(gòu)成の問題、ネットワークの問題、サーバーの過負(fù)荷、またはコーディング エラーが原因で発生します。ステータス コード 520 エラーが発生した場合は、Web サイト管理者またはテクニカル サポート チームに連絡(luò)して詳細(xì)情報と支援を得ることが最善です。

Nginx プロキシ マネージャーを使用して HTTP から HTTPS への自動ジャンプを?qū)g裝する方法 Nginx プロキシ マネージャーを使用して HTTP から HTTPS への自動ジャンプを?qū)g裝する方法 Sep 26, 2023 am 11:19 AM

NginxProxyManager を使用して HTTP から HTTPS への自動ジャンプを?qū)g裝する方法 インターネットの発展に伴い、ますます多くの Web サイトが HTTPS プロトコルを使用してデータ送信を暗號化し、データ セキュリティとユーザーのプライバシー保護(hù)を向上させ始めています。 HTTPS プロトコルは SSL 証明書のサポートを必要とするため、HTTPS プロトコルを展開する際には特定の技術(shù)サポートが必要です。 Nginx は強(qiáng)力で一般的に使用される HTTP サーバーおよびリバース プロキシ サーバーであり、NginxProxy

httpステータスコード403とは何ですか? httpステータスコード403とは何ですか? Oct 07, 2023 pm 02:04 PM

HTTP ステータス コード 403 は、サーバーがクライアントの要求を拒否したことを意味します。 http ステータス コード 403 の解決策は次のとおりです: 1. 認(rèn)証資格情報を確認(rèn)します。サーバーが認(rèn)証を必要とする場合は、正しい資格情報が提供されていることを確認(rèn)します。2. IP アドレス制限を確認(rèn)します。サーバーが IP アドレスを制限している場合は、クライアントの IP アドレスは制限されています。ホワイトリストに登録されているか、ブラックリストに登録されていません。3. ファイルのアクセス許可設(shè)定を確認(rèn)します。403 ステータス コードがファイルまたはディレクトリのアクセス許可設(shè)定に関連している場合は、クライアントがこれらのファイルまたはディレクトリにアクセスするための十分なアクセス許可を持っていることを確認(rèn)してください。等

Web ページのリダイレクトの一般的なアプリケーション シナリオを理解し、HTTP 301 ステータス コードを理解する Web ページのリダイレクトの一般的なアプリケーション シナリオを理解し、HTTP 301 ステータス コードを理解する Feb 18, 2024 pm 08:41 PM

HTTP 301 ステータス コードの意味を理解する: Web ページ リダイレクトの一般的なアプリケーション シナリオ インターネットの急速な発展に伴い、Web ページの操作に対する人々の要求はますます高くなっています。 Web デザインの分野では、Web ページのリダイレクトは一般的かつ重要なテクノロジであり、HTTP 301 ステータス コードによって実裝されます。この記事では、HTTP 301 ステータス コードの意味と、Web ページ リダイレクトにおける一般的なアプリケーション シナリオについて説明します。 HTTP301 ステータス コードは、永続的なリダイレクト (PermanentRedirect) を指します。サーバーがクライアントのメッセージを受信すると、

HTTP 200 OK: 成功した応答の意味と目的を理解する HTTP 200 OK: 成功した応答の意味と目的を理解する Dec 26, 2023 am 10:25 AM

HTTP ステータス コード 200: 成功した応答の意味と目的を調(diào)べる HTTP ステータス コードは、サーバーの応答のステータスを示すために使用される數(shù)値コードです。このうち、ステータス コード 200 は、リクエストがサーバーによって正常に処理されたことを示します。この記事では、HTTP ステータス コード 200 の具體的な意味と使用法について説明します。まず、HTTP ステータス コードの分類を理解しましょう。ステータス コードは、1xx、2xx、3xx、4xx、5xx の 5 つのカテゴリに分類されます。このうち、2xx は成功応答を示します。 200 は 2xx で最も一般的なステータス コードです

クイックアプリケーション: PHP 複數(shù)ファイルの非同期 HTTP ダウンロードの実踐的な開発事例分析 クイックアプリケーション: PHP 複數(shù)ファイルの非同期 HTTP ダウンロードの実踐的な開発事例分析 Sep 12, 2023 pm 01:15 PM

クイック アプリケーション: PHP の実踐的な開発ケース分析 複數(shù)ファイルの非同期 HTTP ダウンロード インターネットの発展に伴い、ファイル ダウンロード機(jī)能は多くの Web サイトやアプリケーションの基本的なニーズの 1 つになりました。複數(shù)のファイルを同時にダウンロードする必要があるシナリオでは、従來の同期ダウンロード方法は非効率的で時間がかかることがよくあります。このため、PHP を使用して HTTP 経由で複數(shù)のファイルを非同期にダウンロードするソリューションがますます一般的になってきています。この記事では、実際の開発事例を通して、PHP 非同期 HTTP の使用方法を詳しく分析します。

404エラーの原因と解決策を徹底調(diào)査 404エラーの原因と解決策を徹底調(diào)査 Feb 25, 2024 pm 12:21 PM

HTTP ステータス コード 404 の原因と解決策を探る はじめに: Web を閲覧する過程で、HTTP ステータス コード 404 が頻繁に発生します。このステータス コードは、サーバーが要求されたリソースを見つけることができなかったことを示します。この記事では、HTTP ステータス コード 404 の原因を調(diào)査し、いくつかの解決策を紹介します。 1. HTTP ステータス コード 404 の理由: 1.1 リソースが存在しない: 最も一般的な理由は、要求されたリソースがサーバー上に存在しないことです。これは、ファイルが誤って削除された、名前が間違っている、パスが間違っているなどが原因である可能性があります。

C# における一般的なネットワーク通信とセキュリティの問題と解決策 C# における一般的なネットワーク通信とセキュリティの問題と解決策 Oct 09, 2023 pm 09:21 PM

C# におけるネットワーク通信とセキュリティの一般的な問題と解決策 今日のインターネット時代では、ネットワーク通信はソフトウェア開発に不可欠な部分となっています。 C# では通常、データ送信のセキュリティ、ネットワーク接続の安定性など、ネットワーク通信の問題が発生します。この記事では、C# における一般的なネットワーク通信とセキュリティの問題について詳しく説明し、対応する解決策とコード例を提供します。 1. ネットワーク通信の問題 ネットワーク接続の中斷: ネットワーク通信プロセス中に、ネットワーク接続が中斷される場合があります。

See all articles