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

Webserver性能如何

yepo

用Workerman的GW快2年了,感覺挺不錯的,現(xiàn)在有個項目想webServer,但是webServer的簡介“WorkerMan自帶了一個簡單的Web服務器,同樣也是基于Worker實現(xiàn)的。文件位置在Workerman/WebServer.php。這個WebServer開發(fā)的目的主要是為了方便運行一些簡單的Web程序”讓我有點迷惑。。。意思是說它只能用來寫寫小網(wǎng)站,不能承受大任。。。。是這個意思?

5248 1 0
1個回答

walkor 打賞

2020-08-18日更新
如果需要使用workerman作為webserver,強烈推薦 webman,一個專門做HTTP服務的框架,性能與workerman相當,簡單易用穩(wěn)定,性能超級好。
——————————————————————————————————————————
總體來說workerman的tcp worker 性能 > workerman的http worker性?>?webserver,因為webserver每個請求要從磁盤讀取文件并解析,會有一些磁盤io損耗。但是worekrman的webserver的性能仍好于nginx+php-fpm組合。
以下是我的mac pro筆記本跑的http worker 和 webserver的helloworld性能測試,php版本7.1.16,你可以參考下。
?
1、http worker 9W+QPS
代碼

<?php
require_once __DIR__ . '/../Workerman/Autoloader.php';
use Workerman\Worker;
$worker = new Worker('http://0.0.0.0:1234');
$worker->count = 7;
$worker->onMessage = function($connection, $data) {
    $connection->send('hello');
};
Worker::runAll();?

壓測結(jié)果 QPS 9.2W

ab -n 100000 -c100 -k  http://127.0.0.1:1234/
This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Completed 100000 requests
Finished 100000 requests

Server Software:        workerman/3.5.15
Server Hostname:        127.0.0.1
Server Port:            1234

Document Path:          /
Document Length:        5 bytes

Concurrency Level:      100
Time taken for tests:   1.084 seconds
Complete requests:      100000
Failed requests:        0
Keep-Alive requests:    100000
Total transferred:      13200000 bytes
HTML transferred:       500000 bytes
Requests per second:    92280.29  (mean)
Time per request:       1.084  (mean)
Time per request:       0.011  (mean, across all concurrent requests)
Transfer rate:          11895.51  received

Connection Times (ms)
              min  mean median   max
Connect:        0    0   0.1      0       5
Processing:     0    1   0.3      1       5
Waiting:        0    1   0.3      1       4
Total:          0    1   0.4      1       6

2、webserver 3W+QPS
代碼

<?php
require_once __DIR__ . '/../Workerman/Autoloader.php';
use Workerman\Worker;
use Workerman\WebServer;
$worker = new WebServer('http://0.0.0.0:1235');
$worker->count = 7;
$worker->addRoot('localhost', __DIR__ . '/Web');
Worker::runAll();

test.php內(nèi)容

<?php
echo 'hello world';

結(jié)果 3.4W QPS

ab -n 100000 -c100 -k  http://127.0.0.1:1235/test.php
This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Completed 100000 requests
Finished 100000 requests

Server Software:        workerman/3.5.15
Server Hostname:        127.0.0.1
Server Port:            1235

Document Path:          /test.php
Document Length:        11 bytes

Concurrency Level:      100
Time taken for tests:   2.895 seconds
Complete requests:      100000
Failed requests:        0
Keep-Alive requests:    100000
Total transferred:      13900000 bytes
HTML transferred:       1100000 bytes
Requests per second:    34542.24  (mean)
Time per request:       2.895  (mean)
Time per request:       0.029  (mean, across all concurrent requests)
Transfer rate:          4688.84  received

Connection Times (ms)
              min  mean median   max
Connect:        0    0   0.1      0       5
Processing:     0    3   1.4      3      11
Waiting:        0    3   1.4      3      11
Total:          0    3   1.4      3      11

總結(jié):
?
雖然壓測性能不代表最終實際項目性能,但是也能看出來workerman這塊不會成為瓶頸,即使是每次都從磁盤加載文件的webserver性能也足夠好。
?
但是實際上大部分項目不需要這么高的性能,絕大多數(shù)項目QPS有幾百就很不錯了,nginx+php-fpm這里不會成為瓶頸,萬一瓶頸加臺機器就好,當然你說數(shù)據(jù)庫是瓶頸那是另外的討論話題了。
?
workerman的webserver性能雖然足夠好,但是畢竟是一個簡單的web服務器,有以下缺點:
1、和nginx+php-fpm 或者 apache比起來功能上會欠缺,比如沒有nginx/apache那么多的配置項。
2、大部分php框架都是基于php-fpm這種模式開發(fā)的,不能完全不支持php cli模式,這使得傳統(tǒng)框架項目一般無法直接運行在workerman上,要運行需要大量的改造,成本很高。
?
所以新http項目想嘗試下高性能可以考慮workerman的http worker或者workerman的webserver,但是老項目還是用php-fpm或者apache較好。
?
最后說下workerman的 http worker和webserver區(qū)別和應用場景:
http worker不會每個請求從磁盤加載文件,程序已經(jīng)常駐內(nèi)存,所有請求是純內(nèi)存計算,性能超高,非常適合做一些不需要渲染頁面的http接口,或者微服務接口。
webserver每個請求回去磁盤加載一次文件并解析,被加載的文件沒有常駐內(nèi)存,有磁盤讀取開銷,性能也很好,適合需要渲染頁面的項目。
?
?

  • 你好啊 2018-12-19

    再問一個問題,“webserver每個請求回去磁盤加載一次文件并解析,被加載的文件沒有常駐內(nèi)存,”。但是如果在webserver下,如果訪問的頁面用include或者require引入文件的話,再次刷新頁面會提示Cannot declare class的錯誤,也就是說這個類已經(jīng)存在了,這又是為何呢?

  • walkor 2018-12-19

    這里說的不夠嚴謹,實際上類和函數(shù)以及常量的定義是常駐內(nèi)存的。

  • yepo 2018-12-19

    感謝大大的詳細回復?。。。。?/p>

  • 你好啊 2018-12-19

    @1:太感謝大神的回復解答了!支持!支持!

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