workerman 寫的 http 服務(wù) 接口 服務(wù)剛啟動(dòng)的 時(shí)候 前幾次請(qǐng)求很快 , 訪問(wèn)的人多了 就變的很卡了
服務(wù)剛開啟 訪問(wèn) 接口 非???快到模糊
大量用戶訪問(wèn)后 或者 幾天后 即使服務(wù)器很寬松 也會(huì)很卡 沒(méi)有服務(wù)剛開啟時(shí)那么快了 除非重啟服務(wù)
workerman http 服務(wù)配置:
<?php
use ba\Filesystem;
$logFile = Filesystem::fsFit(runtime_path() . 'worker/log/' . date('Y-m-d') . '.log');
if (!is_dir(dirname($logFile))) {
mkdir(dirname($logFile), 0755, true);
}
return [
// Worker的參數(shù)(支持所有配置項(xiàng))
'option' => [
'protocol' => 'http', // 協(xié)議,支持 tcp udp unix http websocket text
'ip' => '0.0.0.0', // 監(jiān)聽(tīng)地址
'port' => env('WORKER.PORT', '8002'), // 監(jiān)聽(tīng)端口
'name' => 'baHttpWorker', // Worker實(shí)例名稱
'count' => 4, // 進(jìn)程數(shù)
'pidFile' => Filesystem::fsFit(runtime_path() . 'worker/http.pid'), // 進(jìn)程ID存儲(chǔ)位置
'logFile' => $logFile, // 日志存儲(chǔ)位置
],
// socket 上下文選項(xiàng),可配置SSL證書等
'context' => [],
// 回調(diào)類命名空間
'eventHandler' => 'app\\worker\\events\\Http',
// 需要注冊(cè)的回調(diào)方法
'events' => [
'onWorkerStart',
'onWorkerReload',
'onConnect',
'onMessage',
'onClose',
'onBufferFull',
'onBufferDrain',
'onError',
],
// 靜態(tài)服務(wù)器配置
'staticServer' => [
// 禁止訪問(wèn)的文件類型
'deny' => ['php', 'bat', 'lock', 'ini'],
// 要求瀏覽器下載而不是直接打開的文件類型(比如 pdf 文件內(nèi)可能含有 xss 攻擊代碼)
'attachment' => ['pdf'],
],
];
大量用戶訪問(wèn)過(guò)后單獨(dú)調(diào)試的 重啟服務(wù)又變快了
linux 8核 16g 帶寬 10m
workerman 3.1
大哥你的數(shù)據(jù)都是 29kb了。1MB帶寬128kb。你自己計(jì)算下呢。你提供接口我建議你還是用webman吧。
你這個(gè)要自己找原因,第一就是你這個(gè)熱點(diǎn)接口數(shù)據(jù)包都 29kb。你的10M轉(zhuǎn)成數(shù)據(jù)包也是1280kb。高并發(fā)這個(gè)接口 44次頻率訪問(wèn);這還是理想情況下;多看看優(yōu)化方案。php沒(méi)那么拉胯。webman下數(shù)據(jù)庫(kù)設(shè)計(jì)合理,多級(jí)緩存合理;達(dá)到高并發(fā)很簡(jiǎn)單的。
建議:去看云商的出入網(wǎng)帶寬率。
去看tcp連接數(shù),就知道你當(dāng)前系統(tǒng)并發(fā)數(shù)了。