热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

wrk压测打不上去,工作进程一致处于io等待状态。

问题描述使用wrk压测,设置1客户情况下压测正常完成,若客户数量大于1,则工作进程一致处于IO等待状态,响应极慢。

问题描述

使用 wrk 压测,设置 1 客户情况下压测正常完成,若客户数量大于 1,则工作进程一致处于 IO 等待状态,响应极慢。




补充1

发现进程启动时也存在相同的状况,比如触发

1
onWorkerStart

事件后要等待5秒才在




1
shell

中回显。
经过核查,在

1
onWorkerStart

中的业务代码耗时只耗时

1
0.015s


通过

1
strace

发现在IO操作时发生协程切换导致耗时

1
5s

1
2
3
4
5
6
7
8
3334  14:40:09.088417 <... close resumed> ) = 0 <0.000405>

3334  14:40:09.088537 lstat("/home/vagrant/code/nxAdmin/vendor/composer/../nhzex/tp-swoole/src/Resetters2/RebindHttpContainer.php", {st_mode=S_IFREG|0775, st_size=516, ...}) = 0 <0.000118>

3334  14:40:09.088751 openat(AT_FDCWD, "/home/vagrant/code/nxAdmin/vendor/nhzex/tp-swoole/src/Resetters2/RebindHttpContainer.php", O_RDONLY

3334  14:40:14.217150 <... openat resumed> ) = 15 <5.128368>

3334  14:40:14.217250 fstat(15,  

3334  14:40:14.217306 <... fstat resumed> {st_mode=S_IFREG|0775, st_size=516, ...}) = 0 <0.000045>

3334  14:40:14.217405 fstat(15,  

3334  14:40:14.217436 <... fstat resumed> {st_mode=S_IFREG|0775, st_size=516, ...}) = 0 <0.000020>

================ 原问题 ===============

环境

1
2
PHP 7.2.18-1+ubuntu18.04.1+deb.sury.org+1

Swoole 4.3.4 & 4.3.3


Swoole Server Http 设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Runtime::enableCoroutine(true);

[

    'daemonize' => false,

    'dispatch_mode' => 2,

    'worker_num' => 4,

    'enable_coroutine' => true,



    'task_worker_num' => 2,

    'task_enable_coroutine' => true,



    'pid_file' => App::getRuntimePath() . 'swoole.pid',

    'log_file' => App::getRuntimePath() . 'swoole.log',



    'enable_static_handler' => true,

    'document_root' => App::getRootPath() . 'public',



    'heartbeat_check_interval' => 60,

    'heartbeat_idle_time' => 1200,



    'package_max_length' => 20 * 1024 * 1024,

    'buffer_output_size' => 10 * 1024 * 1024,

    'socket_buffer_size' => 128 * 1024 * 1024,



    'send_yield' => true,

    'reload_async' => true,

]


压测正常状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
wrk --latency --timeout 3s -t1 -c1 -d30s http://127.0.0.1:9505/

Running 30s test @ http://127.0.0.1:9505/

  1 threads and 1 connections

  Thread Stats   Avg      Stdev     Max   +/- Stdev

    Latency    10.70ms    3.44ms  39.65ms   87.14%

    Req/Sec    94.73     19.41   121.00     79.67%

  Latency Distribution

     50%    9.39ms

     75%   10.28ms

     90%   15.44ms

     99%   24.84ms

  2838 requests in 30.08s, 5.43MB read

Requests/sec:     94.34

Transfer/sec:    184.90KB


压测失败状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
wrk --latency --timeout 3s -t4 -c4 -d30s http://127.0.0.1:9505/

Running 30s test @ http://127.0.0.1:9505/

  4 threads and 4 connections

  Thread Stats   Avg      Stdev     Max   +/- Stdev

    Latency    70.38ms  391.57ms   2.76s    97.96%

    Req/Sec    18.50     30.50    70.00     71.43%

  Latency Distribution

     50%   14.13ms

     75%   15.84ms

     90%   17.15ms

     99%    2.76s

  58 requests in 30.07s, 113.68KB read

  Socket errors: connect 0, read 0, write 0, timeout 9

Requests/sec:      1.93

Transfer/sec:      3.78KB


strace 详情

1
2
3
4
5
6
7
8
9
10
[pid 12317] 10:48:30.016398 openat(AT_FDCWD, "/home/vagrant/code/project/runtime/temp/77fce4e169dad1de2ddeb9e87d2045b2eec20baa.php", O_RDONLY) = 30 <5.100331>

[pid 12317] 10:48:35.116888 fstat(30, {st_mode=S_IFREG|0775, st_size=2273, ...}) = 0 <0.000064>

......

[pid 12317] 10:48:35.152471 openat(AT_FDCWD, "/home/vagrant/code/project/runtime/temp/77fce4e169dad1de2ddeb9e87d2045b2eec20baa.php", O_RDONLY) = 30 <5.089026>

[pid 12317] 10:48:40.241569 fstat(30, {st_mode=S_IFREG|0775, st_size=2273, ...}) = 0 <0.000012>

......

[pid 12317] 10:48:50.503502 stat("/home/vagrant/code/project/app/view/dispatch_jump.blade.php", {st_mode=S_IFREG|0775, st_size=2133, ...}) = 0 <0.000085>

[pid 12317] 10:48:50.503701 stat("/home/vagrant/code/project/runtime/temp//77fce4e169dad1de2ddeb9e87d2045b2eec20baa.php", {st_mode=S_IFREG|0775, st_size=2273, ...}) = 0 <0.000062>

[pid 12317] 10:48:50.503939 openat(AT_FDCWD, "/home/vagrant/code/project/runtime/temp/77fce4e169dad1de2ddeb9e87d2045b2eec20baa.php", O_RDONLY) = 30 <0.001014>

[pid 12317] 10:48:50.505123 fstat(30, {st_mode=S_IFREG|0775, st_size=2273, ...}) = 0 <0.000106>

可以看到在

1
opena

函数执行耗时达

1
5s


   



推荐阅读
  • 1、编写一个Java程序在屏幕上输出“你好!”。programmenameHelloworld.javapublicclassHelloworld{publicst ... [详细]
  • D17:C#设计模式之十六观察者模式(Observer Pattern)【行为型】
    一、引言今天是2017年11月份的最后一天,也就是2017年11月30日,利用今天再写一个模式,争取下个月(也就是12月份& ... [详细]
  • Asynchronous JavaScript and XML (AJAX) 的流行很大程度上得益于 Google 在其产品如 Google Suggest 和 Google Maps 中的应用。本文将深入探讨 AJAX 在 .NET 环境下的工作原理及其实现方法。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • flea,frame,db,使用,之 ... [详细]
  • 本文详细介绍了Elasticsearch中的分页查询机制,包括基本的分页查询流程、'from-size'浅分页与'scroll'深分页的区别及应用场景,以及两者在性能上的对比。 ... [详细]
  • 如何高效解决Android应用ANR问题?
    本文介绍了ANR(应用程序无响应)的基本概念、常见原因及其解决方案,并提供了实用的工具和技巧帮助开发者快速定位和解决ANR问题,提高应用的用户体验。 ... [详细]
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 使用Swoole的时候出现以下问题,如何解决呢?不是太懂,希望高手们能帮帮忙!谢谢了!是运行https://github.com/matyhtf/webim里的开源项目:matyh ... [详细]
  • 本文详细介绍了 Java 中 org.apache.jena.atlas.lib.ByteBufferLib 类下的 acopyArray 方法,并提供了多个实际应用中的代码示例,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文详细介绍了PostgreSQL与MySQL在SQL语法上的主要区别,包括如何使用COALESCE替代IFNULL、金额格式化的方法、别名处理以及日期处理等关键点。 ... [详细]
  • 本文探讨了在Windows系统中运行Apache服务器时频繁出现崩溃的问题,并提供了多种可能的解决方案和建议。错误日志显示多个子进程因达到最大请求限制而退出。 ... [详细]
  • 本文通过一个具体的实例,介绍如何利用TensorFlow框架来计算神经网络模型在多分类任务中的Top-K准确率。代码中包含了随机种子设置、模拟预测结果生成、真实标签生成以及准确率计算等步骤。 ... [详细]
  • 计算机学报精选论文概览(2020-2022)
    本文汇总了2020年至2022年间《计算机学报》上发表的若干重要论文,旨在为即将投稿的研究者提供参考。 ... [详细]
  • 探讨在 Swoole 的 WorkerStart 回调中创建的对象如何在多个客户端之间实现隔离,确保每个客户端的数据独立性。 ... [详细]
author-avatar
熊金涟_473
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有