ホームページ  >  記事  >  運用・保守  >  Linux の高い同時実行性とは何を意味しますか?

Linux の高い同時実行性とは何を意味しますか?

青灯夜游
青灯夜游オリジナル
2022-11-11 15:25:141776ブラウズ

Linux における高同時実行性とは、システム運用中に遭遇する「短時間に大量の操作リクエストに遭遇する」状況のことで、主に Web システムから大量のリクエストへのアクセスが集中した場合に発生します。大量のリクエストを受信する; この状況が発生すると、この期間中にシステムはリソースのリクエスト、データベース操作などの大量の操作を実行することになります。

Linux の高い同時実行性とは何を意味しますか?

#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。

高同時実行性の概念

1.1 高同時実行性の概念

高同時性これは、次の 1 つです。インターネット分散システム アーキテクチャの設計で考慮する必要がある要素。通常、システムが設計を通じて多くのリクエストを同時に並行して処理できるようにすることを指します。 高同時実行性(High Concurrency)とは、システム運用時に「短時間に大量の操作要求が発生する」状況のことで、主にWebシステムに大量の処理が集中した場合に発生します。アクセス数やリクエスト数が多い(例:チケット取得状況12306件、天猫ダブルイレブンイベント)。この状況が発生すると、システムはこの期間中にリソースの要求、データベース操作などの多数の操作を実行することになります。

1.2 高同時実行性関連の指標

応答時間 (応答時間)
  • システムはリクエストに応答します時間。たとえば、システムが HTTP リクエストを処理するのに 200 ミリ秒かかります。この 200 ミリ秒がシステムの応答時間です。
    スループット(スループット)
  • 単位時間あたりに処理されるリクエスト
    1 秒あたりのクエリ率 QPS (Query Per Second)
  • 1 秒あたりの応答リクエストの数。インターネット分野では、この指標とスループットの区別はそれほど明確ではありません。
    同時接続ユーザー数 (User Concurrence)
  • 通常の通信を同時に実行するユーザーの数。システム機能の使用。たとえば、インスタント メッセージング システムでは、同時オンライン ユーザーの数は、システムの同時ユーザーの数をある程度表します。

#1.3 高度な同時実行性の最適化

    単一プロセスでオープンできるファイルの最大数の制限
  • カーネル TCP パラメータ
  • #IO イベント割り当てメカニズム

2 システムの同時実行機能の向上2.1 垂直方向の拡張

スタンドアロン処理能力の向上

  • スタンドアロン ハードウェアのパフォーマンスを向上します。たとえば、CPU コアの数を増やします。 32 コアなど、より優れたネットワーク カード (10G など) へのアップグレード、SSD などのより優れたハード ドライブへのアップグレード、2T などのハード ディスク容量の拡張、128G
    • などのシステム メモリの拡張

      # 単一マシン アーキテクチャのパフォーマンスを向上させるには、たとえば、キャッシュを使用して IO 回数を削減し、非同期を使用して単一サービスのスループットを向上させ、ロックフリーのデータ構造を使用して応答時間を短縮します

2.2 水平方向の拡張

サーバーの台数を追加すると、システムのパフォーマンスを直線的に拡張できます

  • #2.3 一般的なインターネット層アーキテクチャ

(1) クライアント層: 一般的な通話相手はブラウザまたはモバイル アプリケーション APP(2) リバースプロキシ層: システム入口、リバースプロキシ

(3) サイトアプリケーション層: コアアプリケーションロジックの実装、html または json を返す

(4) サービス層: サービス化の場合

#(5) データ キャッシュ レイヤー: キャッシュによりストレージへのアクセスが高速化されます

(6 ) データ データベース レイヤー: データベースの固定化されたデータ ストレージ

2.4 水平拡張アーキテクチャ

リバース プロキシ層のレベル拡張機能

    いつnginx がボトルネックになる場合は、サーバーの数を増やし、新しい nginx サービスをデプロイし、外部ネットワーク IP を追加するだけで、リバース プロキシ レイヤーのパフォーマンスを拡張できます。理論的には無限に高い同時実行性
  • # は「DNS ポーリング」によって実現されます。 dns-server はドメイン名の複数の解決 IP で構成されており、各 DNS 解決リクエストは dns-server にアクセスします。これらの IP はポーリングされて返されます
  • サイト層の水平展開
  • は「nginx」によって実装されます。 nginx.conf を変更することで、複数の Web バックエンドをセットアップできます
  • #Web バックエンドがボトルネックになった場合は、サーバーの数を増やし、nginx 構成に新しい Web サービス デプロイメントを追加するだけです。新しい Web バックエンドを構成すると、サイト層のパフォーマンスが拡張され、理論上無限に高い同時実行性を実現できます

    • サービス層の水平方向の拡張
    • 「サービス接続プール」を通じて実現
  • #サイト層が RPC クライアント経由で下流のサービス層 RPC サーバーを呼び出すと、接続プールは複数の接続を確立します。ダウンストリーム サービス。サービスがボトルネックになった場合は、サーバーの数を増やし、新しいサービスをデプロイし、RPC クライアントで新しいダウンストリーム サービス接続を確立するだけで、サービス層のパフォーマンスが拡張され、理論上の結果が得られます。

    # での無制限の高同時実行性

    • ## データ層の水平方向の拡張

    • #データ層 (キャッシュ、データベース) にはデータが関与します。 水平方向の拡張により、データ (キャッシュ) が水平方向に分割されます。 、データベース)は、システムのパフォーマンスを拡張するという目的を達成するために、もともと 1 つのサーバーに保存されていたものを別のサーバーに保存します。

    • 特定の範囲のデータを保存します

      • user0 ライブラリ、uid 範囲 1-1kw

      • user1 ライブラリを保存します、ストレージ uid 範囲 1kw-2kw

    • ハッシュに従って水平に分割

      • user0 ライブラリ、均等な uid データを保存

      • #user1 ライブラリ、奇数の uid データを保存します

3 台の単一 Linux サーバーで同時実行性が向上

3.1 iptables 関連

##iptables ファイアウォールを閉じて、カーネルが iptables モジュールをロードしないようにします
  • 単一プロセスでオープンできるファイルの最大数の制限 (単一プロセスでオープンできるファイルのデフォルトの最大数は 1024 です)
ulimit –n 65535
  • Linux システムでユーザーが開いているファイルの数を変更するソフトウェア 制限とハードリミット
  • vim /etc/security/limits.conf
    * soft nofile 65535   #'*'表示修改所有用户的限制
    * hard nofile 65535
    #用户完成系统登录后读取/etc/security/limits.conf文件
    vim /etc/pam.d/login
    sessionrequired /lib/security/pam_limits.so
  • 3.2 カーネル TCP パラメータ TIME_WAIT ステータス

      TCP 接続が切断された後、ポートが解放されるまで一定時間 TIME_WAIT 状態が維持されます。同時リクエストが多すぎると、TIME_WAIT状態のコネクションが大量に生成され、切断が間に合わないとポートリソースやサーバーリソースが大量に占有されてしまいます。
    #查看TIME_WAIT状态连接
    netstat -n | grep tcp | grep TIME_WAIT |wc -l
    # vim /etc/sysctl.conf
    net.ipv4.tcp_syncookies= 1 #表示开启SYNCookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
    net.ipv4.tcp_tw_reuse= 1 #表示开启重用。允许将TIME-WAITsockets重新用于新的TCP连接,默认为0,表示关闭;
    net.ipv4.tcp_tw_recycle= 1 #表示开启TCP连接中TIME-WAITsockets的快速回收,默认为0,表示关闭;
    net.ipv4.tcp_fin_timeout= 30  #修改系統默认的TIMEOUT 时间。
  • 関連する推奨事項: "

    Linux ビデオ チュートリアル

    >>
  • 以上がLinux の高い同時実行性とは何を意味しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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