ホームページ PHPフレームワーク Workerman Workerman はどのようにして高い同時実行性を実現するのでしょうか?

Workerman はどのようにして高い同時実行性を実現するのでしょうか?

Dec 05, 2019 am 10:21 AM
workerman

Workerman はどのようにして高い同時実行性を実現するのでしょうか?

同時実行の概念は曖昧すぎるため、ここでは同時接続数と同時リクエスト数という 2 つの定量化可能な指標を使用します。

同時接続数は、サーバーが現時点で維持している TCP 接続の数を指し、これらの接続でデータ通信があるかどうかは関係ありません。 (推奨調査: workman チュートリアル)

たとえば、メッセージ プッシュ サーバーは数百万のデバイス接続を維持する場合がありますが、接続上でのデータ通信がほとんどないため、このサーバーの負荷が高くなる可能性があります。はほぼ 0 であり、十分なメモリがある限り、接続を受け入れ続けることができます。

ビデオ コースの推奨事項 →: 「数千万のデータに対する同時実行ソリューション (理論と実践)」

同時リクエスト この数は通常 QPS (サーバーが 1 秒あたりに処理するリクエストの数) によって測定されますが、現時点でのサーバー上の TCP 接続の数はあまり重要ではありません。たとえば、サーバーにクライアント接続が 10 個しかなく、各クライアント接続に 1 秒あたり 1W のリクエストがある場合、サーバーは少なくとも 10*1W=10W の 1 秒あたりのスループット (QPS) をサポートできる必要があります。

1 秒あたり 10W のスループットがこのサーバーの制限であると仮定します。各クライアントが 1 秒あたり 1 つのリクエストをサーバーに送信する場合、このサーバーは 10W クライアントをサポートできます。

同時接続の数はサーバーのメモリによって制限されます。通常、24G メモリの Workerman サーバーは約 120W の同時接続をサポートできます。

同時リクエストの数は、サーバーの CPU 処理能力によって制限されます。24 コアの Workerman サーバーは、1 秒あたり 45 W (QPS) のスループットを達成できます。実際の値は、ビジネスの複雑さと状況によって異なります。コードの品質です。

高同時実行シナリオでは、event または libevent 拡張機能をインストールする必要があります。さらに、Linux カーネル、特にプロセスによって開かれるファイル数の制限を最適化する必要があります。

ストレス テスト データ

ここでは、労働者ストレス テストの QPS データ参照のみを提供します。

テスト環境:

システム: debian 6.0 64-bit

メモリ: 64G

cpu: Intel( R ) Xeon(R) CPU E5-2420 0 @ 1.90GHz (物理 CPU 2 個、6 コア、2 スレッド)

Workerman: 200 Benchark プロセスを開始

ストレス テスト スクリプト :ベンチマーク

ビジネス: hello 文字列の送受信

通常の PHP (バージョン 5.3.10) ストレス テスト

短い接続 (各リクエストごとに接続を閉じる)完了後、次回新しい接続の確立を要求します):

条件: ストレス テスト スクリプトは、500 人の同時ユーザーをシミュレートするために 500 個の同時スレッドを開き、各スレッドは Workerman に 10W 回接続し、各接続は 1 つのリクエストを送信します

結果: スループット: 2.3W/S、CPU 使用率: 36%

#長い接続 (各リクエスト後に接続は閉じられず、次のリクエストでは引き続きこの接続が再利用されます) ):

条件: ストレス テスト スクリプトは、2000 人の同時ユーザーをシミュレートするために 2000 の同時スレッドを開き、各スレッドは Workerman に 1 回接続し、各接続は 10W のリクエストを送信します

結果: スループット: 36.7W/S、CPU 使用率: 69%

メモリ: 各プロセス メモリは 6444K で安定しており、メモリ リークはありません

上記は、php5.3 バージョンのストレス テスト データです。 php7 にすると、パフォーマンスは再び約 40% 向上します。

HHVM 環境ストレス テスト

短い接続 (各リクエストが完了したら接続を閉じ、次回リクエストが完了したときに新しい接続を確立します) made):

条件: ストレス テスト スクリプトは 1000 人の同時スレッドを開き、1000 人の同時ユーザーをシミュレートします。各スレッドは Workerman に 10W 回接続し、各接続は 1 つのリクエストを送信します。

結果:スループット: 3.5 W/S、CPU 使用率: 35%

長い接続 (各リクエスト後に接続は閉じられず、接続は次のリクエストで再利用され続けます):

条件: ストレス テスト スクリプトは 6000 で開かれ、同時スレッドは 6000 人の同時ユーザーをシミュレートし、各スレッドは Workerman に 1 回接続し、各接続は 10W リクエストを送信します。

結果: スループット: 45W/S、CPU 使用率: 67%# ##### メモリ: HHVM 環境の各プロセスのメモリは 46M で安定しており、メモリ リークはありません###

以上がWorkerman はどのようにして高い同時実行性を実現するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Workerman ドキュメントにファイルのアップロードとダウンロードを実装する Workerman ドキュメントにファイルのアップロードとダウンロードを実装する Nov 08, 2023 pm 06:02 PM

Workerman ドキュメントでファイルのアップロードとダウンロードを実装するには、特定のコード サンプルが必要です はじめに: Workerman は、シンプル、効率的、使いやすい高性能 PHP 非同期ネットワーク通信フレームワークです。実際の開発では、ファイルのアップロードとダウンロードが一般的な機能要件となりますが、この記事では、Workerman フレームワークを使用してファイルのアップロードとダウンロードを実装する方法と、具体的なコード例を紹介します。 1. ファイル アップロード: ファイル アップロードとは、ローカル コンピューター上のファイルをサーバーに転送する操作を指します。以下が使用されます

Workerman ドキュメントの基本的な使用方法を実装する方法 Workerman ドキュメントの基本的な使用方法を実装する方法 Nov 08, 2023 am 11:46 AM

Workerman ドキュメントの基本的な使用方法の実装方法の紹介: Workerman は、開発者が同時実行性の高いネットワーク アプリケーションを簡単に構築できるようにする高性能 PHP 開発フレームワークです。この記事では、インストールと構成、サービスとリスニング ポートの作成、クライアント リクエストの処理など、Workerman の基本的な使用方法を紹介します。そして、対応するコード例を示します。 1. Workerman のインストールと構成 コマンド ラインに次のコマンドを入力して、Workerman をインストールします。

スウールとワーカーマンはどちらが良いですか? スウールとワーカーマンはどちらが良いですか? Apr 09, 2024 pm 07:00 PM

Swoole と Workerman はどちらも高性能の PHP サーバー フレームワークです。 Swoole は、非同期処理、優れたパフォーマンス、スケーラビリティで知られており、多数の同時リクエストと高スループットを処理する必要があるプロジェクトに適しています。 Workerman は、使いやすさや同時実行量が少ないプロジェクトに適した直感的な API を備え、非同期モードと同期モードの両方の柔軟性を提供します。

Workerman 開発: UDP プロトコルに基づいてリアルタイム ビデオ通話を実装する方法 Workerman 開発: UDP プロトコルに基づいてリアルタイム ビデオ通話を実装する方法 Nov 08, 2023 am 08:03 AM

Workerman 開発: UDP プロトコルに基づくリアルタイム ビデオ通話 概要: この記事では、Workerman フレームワークを使用して、UDP プロトコルに基づくリアルタイム ビデオ通話機能を実装する方法を紹介します。 UDP プロトコルの特性を深く理解し、コード例を通じて、シンプルだが完全なリアルタイム ビデオ通話アプリケーションを構築する方法を示します。はじめに: ネットワーク通信において、リアルタイムのビデオ通話は非常に重要な機能です。従来の TCP プロトコルでは、リアルタイム性の高いビデオ通話を実装する場合、伝送遅延などの問題が発生する可能性があります。そしてUDP

Workerman を使用して高可用性負荷分散システムを構築する方法 Workerman を使用して高可用性負荷分散システムを構築する方法 Nov 07, 2023 pm 01:16 PM

Workerman を使用して高可用性ロード バランシング システムを構築する方法には、特定のコード サンプルが必要です。現代のテクノロジーの分野では、インターネットの急速な発展に伴い、大量の同時リクエストを処理する必要がある Web サイトやアプリケーションがますます増えています。高可用性と高性能を実現するために、負荷分散システムは不可欠なコンポーネントの 1 つになっています。この記事では、PHP オープン ソース フレームワーク Workerman を使用して高可用性負荷分散システムを構築する方法を紹介し、具体的なコード例を示します。 1. ワーカーマンワークの紹介

Workermanドキュメントにリバースプロキシ機能を実装する方法 Workermanドキュメントにリバースプロキシ機能を実装する方法 Nov 08, 2023 pm 03:46 PM

Workerman ドキュメントでリバース プロキシ機能を実装するには、具体的なコード例が必要です はじめに: Workerman は、豊富な機能と強力なパフォーマンスを提供する高性能 PHP マルチプロセス ネットワーク通信フレームワークであり、Web のリアルタイム通信や長時間の通信で広く使用されています。接続、サービス シナリオ。このうち、Workermanはリバースプロキシ機能もサポートしており、サーバーが外部サービスを提供する際の負荷分散や静的リソースのキャッシュを実現できます。この記事ではWorkermanを利用してリバースプロキシ機能を実装する方法を紹介します。

Workerman ドキュメントにタイマー機能を実装する方法 Workerman ドキュメントにタイマー機能を実装する方法 Nov 08, 2023 pm 05:06 PM

Workerman ドキュメントにタイマー機能を実装する方法 Workerman は、タイマー機能を含む豊富な機能を提供する強力な PHP 非同期ネットワーク通信フレームワークです。タイマーを使用して、指定された時間間隔内でコードを実行します。これは、スケジュールされたタスクやポーリングなどのアプリケーション シナリオに非常に適しています。次に、Workerman でタイマー機能を実装する方法と具体的なコード例を詳しく紹介します。ステップ 1: Workerman をインストールする まず、Worker をインストールする必要があります

Workerman ドキュメントでの TCP/UDP 通信の実装方法 Workerman ドキュメントでの TCP/UDP 通信の実装方法 Nov 08, 2023 am 09:17 AM

Workerman ドキュメントで TCP/UDP 通信を実装する方法には、特定のコード サンプルが必要です。Workerman は、TCP および UDP 通信の実装に広く使用されている高性能 PHP 非同期イベント ドリブン フレームワークです。この記事では、Workerman を使用して TCP および UDP ベースの通信を実装する方法を紹介し、対応するコード例を示します。 1. TCP 通信用の TCP サーバーを作成します。Workerman を使用して TCP サーバーを作成するのは非常に簡単です。次のコードを記述するだけです: <?ph

See all articles