yuandj 最近的时间轴更新
yuandj

yuandj

V2EX 第 511793 号会员,加入于 2020-10-10 11:26:23 +08:00
关于 PHP Rdkafka 消费者性能讨论
Kafka  •  yuandj  •  202 天前  •  最后回复来自 iyaozhen
6
关于 swoole 的协程和 channel 使用遇到的问题
PHP  •  yuandj  •  328 天前  •  最后回复来自 yuandj
3
PHP 项目架构性能瓶颈问题请教
PHP  •  yuandj  •  332 天前  •  最后回复来自 fuxkcsdn
40
收到腾讯 HR 的电话,问有没有在看机会
职场话题  •  yuandj  •  335 天前  •  最后回复来自 ErwinCheung
5
关于不同的 PHP 语法在并发时的性能问题请教
PHP  •  yuandj  •  2020-11-11 14:30:14 PM  •  最后回复来自 lovecy
10
yuandj 最近回复了
@liuxu worker 个数和 cpu 核心数一致,可以减少 CPU 切换的 IO

比如 8 核机器,开 16 个 worker ,那么这 8 核需要在 16 个 worker 中来回切换

如果只开 8 个 worker ,一个核对一个 worker ,就减少了 CPU 的切换 io

之所以没有出现 502 ,可能是因为目前的量没到达顶峰。并且到达顶峰后,也不会报 502 ,表现是 worker 处理的慢,接口响应增长,nginx 那边超时断连,会返回 499.
@liuxu 排除了一下,不是定时器的问题。

后来尝试把异常的三台服务器的 swoole worker number 调整为了 8 ,其他的是 16 ,初步观察变得正常了,所以推测还是程序处理慢,cpu 切换频繁带来的性能消耗。

但是如果是 redis 或者 kafka 响应慢,也不应该只出现在这几台服务器上。所以这个问题还需要继续排查
@liuxu Kafka 写入慢,导致连接数增加,这个是合理的。但写入 Kafka 时用了协程,并不会影响到主协程的速度。
@liuxu
1 、swooler 的控制台日志并没有往 fluentd 里发送,发送的都是业务日志,并且量不小。目前接收的日志服务器确实也存在问题,很早之前搭建的,单核处理的,这么大量的日志目前打包不过来,所以偶尔会出现 ruby 占用内存过高的问题。
2 、这台服务器不止对 kafka 连接数比较多,对 mysql 和 redis 也比其他的服务器要多,我只是列出了 kafka 的。
3 、大多时间异常服务器对 nginx 的连接数是要比正常服务器多的。截图时截太巧了。。
4 、目前每次请求,都会从 Kafka 连接池拿一个链接写入数据,Kafka 连接池并不是服务初始化的,而是有业务请求时去创建的。这样看来从 Kafka 连接池初始化这块逻辑有优化的空间。
5 、目前正在使用 strace 追 worker 进程的问题,发现异常服务器的进程调用 gettimeofday(swooler 定时器)比较多,猜测是业务的定时任务落在了此服务器上,打算把定时任务固定到一台服务器试一下。
6 、感谢指点
用 “strace -cp 进程 id” 追了一下 swoole worker 的系统调用

% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
32.87 0.404515 4 103647 gettimeofday
20.26 0.249291 5 53990 34800 recvfrom
14.14 0.174060 10 18136 sendto
10.83 0.133311 4 33749 clock_gettime
10.02 0.123303 5 26864 epoll_ctl
7.08 0.087140 8 11096 epoll_wait
1.46 0.017924 5 3798 1033 read

目前怀疑和定时器有关
@pmispig 接口 qps 较高,业务中每次都会有生产者往 kafka 里写数据,并且已经加了连接池
@pmispig 从监控面板看,和其他服务器 qps 是相近的,但连接数却多 40%左右。nginx 用的轮询,也没加权重,感觉 7 楼说的有一定道理,但为什么这台处理的要比其他的慢,这个问题还需要排查。从监控面板( grafana )可以看到,在平时单机 500qps 时,虽然没有发生响应延长,但是异常的服务器 system load 在 120%左右,其他的都是在 40%左右。
@latteczy 我感觉也是啊,为什么别人的服务器都这么 NB ,2 核 4G 都能抗 1000qps 。。。我这服务器抗 500qps ,ss -a 查看 tcp 连接数时,达到 8000 多就不行了
@nekoyaki tcp_timestamps 和 tcp_tw_reuse 都为 1 ,tcp_tw_recycle 的值没有查出来,应该已经废弃了
@sujin190 同负载的情况,多台服务器,只有个别的 3 台服务器链接数会比别的多。“个别服务器比别的服务器处理的慢,从而导致接了更多请求,导致请求时间延长”,这个想来也有道理,但具体原因还需要再找一下。感谢指点
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3896 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 25ms · UTC 06:45 · PVG 14:45 · LAX 22:45 · JFK 01:45
♥ Do have faith in what you're doing.