国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

壓測workerman時(shí)如何提高QPS

lbl

看到techempower對(duì)workerman測試Plaintext,QPS可以達(dá)到1,975,455 ;本地實(shí)測僅277880。一個(gè)百萬級(jí),一個(gè)十萬級(jí),相差太大了??隙y試方法有問題,大家能否給點(diǎn)建議?
【測試環(huán)境】
操作系統(tǒng):Ubuntu 22.04.1 LTS Kernel: 5.15.0-43-generic x86_64
CPU:4核
Info: quad core model: Intel Core i5-7500 bits: 64 type: MCP
smt: <unsupported> arch: Kaby Lake rev: 9 cache: L1: 256 KiB L2: 1024 KiB
L3: 6 MiB
Speed (MHz): avg: 3706 high: 3723 min/max: 800/3800 cores: 1: 3723
2: 3721 3: 3696 4: 3687 bogomips: 27199
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx

Mem: 7806.2/15765.4 MiB (49.5%)

Storage: 465.76 GiB (38.2% used)
【測試代碼】

<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
use Workerman\Protocols\Http\Request;
require_once __DIR__ . '/vendor/autoload.php';

// 創(chuàng)建一個(gè)Worker監(jiān)聽2345端口,使用http協(xié)議通訊
$http_worker = new Worker("http://0.0.0.0:2345");

// 啟動(dòng)4個(gè)進(jìn)程對(duì)外提供服務(wù)
$http_worker->count = 4;

// 接收到瀏覽器發(fā)送的數(shù)據(jù)時(shí)回復(fù)hello world給瀏覽器
$http_worker->onMessage = function(TcpConnection $connection, Request $request)
{
    // 向?yàn)g覽器發(fā)送hello world
    $connection->send('hello world');
};

// 運(yùn)行worker
Worker::runAll();

【測試方法】

php start.php start

Workerman[start.php] start in DEBUG mode
------------------------------------------- WORKERMAN -------------------------------------------
Workerman version:4.0.42          PHP version:8.1.4           Event-Loop:\Workerman\Events\Event
-------------------------------------------- WORKERS --------------------------------------------
proto   user            worker          listen                 processes    status           
tcp     whois           none            http://0.0.0.0:2345    4             [OK]            
-------------------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
./wrk  -t4 -c256 -d15s http://127.0.0.1:2345
Running 15s test @ http://127.0.0.1:2345
  4 threads and 256 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.31ms    1.83ms  27.90ms   88.25%
    Req/Sec    69.95k     6.95k  113.29k    73.29%
  4187626 requests in 15.07s, 527.16MB read
Requests/sec: 277880.53
Transfer/sec:     34.98MB
1838 3 0
3個(gè)回答

2548a

cpu 硬盤就不是一個(gè)級(jí)別的.

  • lbl 2022-08-11

    測試了libreactor和workerman,QPS都在二十萬后就提高不了。

nitron

TechEmpower的機(jī)器DELL R440是XEON Gold 5120處理器至少14核28線程,內(nèi)存32G,萬兆網(wǎng)絡(luò),而且客戶端,服務(wù)器,數(shù)據(jù)庫分在3臺(tái)不同的機(jī)器上

你這個(gè)7代I5,4核4線程,16內(nèi)存,客戶端服務(wù)器同一個(gè)機(jī)器,而且..還是運(yùn)行在DEBUG模式下

PS: plaintext這種測試,確實(shí)核心越多越牛逼,他線程數(shù)是你的7倍,QPS是你的7倍也很正常

  • lbl 2022-08-11

    謝謝,經(jīng)你提醒我才發(fā)現(xiàn)我是在調(diào)試模式下測。不過,今天這同一機(jī)器上使用php start.php start -d測試非調(diào)試模式,QPS相差不大。
    現(xiàn)在發(fā)現(xiàn) Event-Loop使用Event或Select沒什么區(qū)別。感覺是event沒起作用。

  • nitron 2022-08-11

    說了啊,"hello world"這種測試就是看核心數(shù).不涉及IO,Event和Select沒區(qū)別

  • lbl 2022-08-11

    我看CPU負(fù)載和使用率都沒過半。這是不是說明CPU的算力還沒有飽和吧?

  • walkor 2022-08-11

    hello world 這種壓測,增加cpu不一定能提高QPS,因?yàn)槠款i在linux網(wǎng)絡(luò)內(nèi)核了。你用8核對(duì)比4核壓測出來QPS不會(huì)有明顯增加。這種情況需要使用多隊(duì)列網(wǎng)卡或者其他手段提升網(wǎng)絡(luò)性能才可以提高QPS。

  • chaz6chez 2022-08-11

    kernel bypass【手動(dòng)狗頭】

  • walkor 2022-08-11

    另外 Plaintext壓測 使用了pipeline,可以大幅度提高性能,但是一般我們用不到pipeline。
    非pipeline的helloworld QPS看json的壓測結(jié)果,DELL R440是XEON Gold 5120處理器14核28線程,內(nèi)存32G,萬兆網(wǎng)絡(luò)帶寬,workerman大概110萬QPS,極限可達(dá)到130萬QPS。

  • chaz6chez 2022-08-11

    就eBPF而言,PHP想玩的騷一點(diǎn),可以用FFI調(diào)用C庫libbpf,自己實(shí)現(xiàn)一套;
    如果不是極客精神的話,其實(shí)大可不必在意這個(gè)點(diǎn),了解了解就ok了

  • lbl 2022-08-12

    @walkor,@chaz6chez 謝謝兩位的回答,這讓我有個(gè)新的發(fā)現(xiàn),不過這塊知識(shí)對(duì)我而言比較陌生,今天從簡單的配置網(wǎng)卡多隊(duì)列來實(shí)驗(yàn),雖然配置成功了,但是發(fā)現(xiàn)CPU中斷不是很均衡。

    # 網(wǎng)卡多隊(duì)列情況
    ethtool -l eth0 |grep Combined
    Combined:   2
    Combined:   2
    # CPU情況
    %Cpu0  :  0.0 us, 21.3 sy,  2.0 ni,  0.0 id,  0.0 wa,  1.7 hi, 75.1 si,  0.0 st
    %Cpu1  :  0.3 us, 73.7 sy, 20.1 ni,  5.6 id,  0.0 wa,  0.3 hi,  0.0 si,  0.0 st

    然后編譯運(yùn)行l(wèi)ibreacotor,也發(fā)現(xiàn)雖然啟用了多核,但調(diào)度失衡,僅一核在工作?,F(xiàn)有的知識(shí)量,真不夠我去探索這個(gè)問題,需要再繼續(xù)學(xué)習(xí)才能去探究了。

  • chaz6chez 2022-08-12

    @lbl 就這一部分來說,其實(shí)挺有意思的,我建議你可以去稍微了解一下DPDK,現(xiàn)在很多做kernel bypass的應(yīng)用程序通常來說會(huì)選擇DPDK,但是DPDK也有其優(yōu)劣勢;我說的eBPF主要是去利用XDP指令去處理,他也有自身的優(yōu)劣勢以及當(dāng)前發(fā)展的局限性,這部分目前來說可以去研究玩玩看,PHP FFI的特性結(jié)合libbpf是可以去嘗試玩玩XDP指令的,不過前提是得有一定的C語言基礎(chǔ)。

胡桃

wrk單進(jìn)程測得出來個(gè)雞毛,你得開新wrk進(jìn)程直到CPU吃滿為止分析數(shù)據(jù)之和。

  • lbl 2022-08-13

    wrk單服務(wù)器百萬級(jí)并發(fā)壓測沒有問題。千萬級(jí)涉及的知識(shí)就比較深?yuàn)W了。以下是32核服務(wù)器測試數(shù)據(jù)。
    ···shell
    ./wrk -t32 -c5000 -d15s http://192.168.0.66:8080/plaintext
    Running 15s test @ http://192.168.0.66:8080/plaintext
    32 threads and 5000 connections
    Thread Stats Avg Stdev Max +/- Stdev
    Latency 4.63ms 6.72ms 206.06ms 90.66%
    Req/Sec 40.88k 20.07k 82.50k 61.82%
    19443282 requests in 15.10s, 2.44GB read
    Requests/sec: 1287926.27
    Transfer/sec: 165.82MB

年代過于久遠(yuǎn),無法發(fā)表回答
??