qq_48248889 2023-02-24 18:04 采纳率: 50%
浏览 29
已结题

apr_socket_recv: 你的主机中的软件中止了一个已建立的连接。

Windows系统下 用ab进行压测,当线程数量大于15,
抛出:**apr_socket_recv: 你的主机中的软件中止了一个已建立的连接。 (730053)**】
同段网络服务器压服务器Tps100左右,异段网络维持在10tps左右上不去
求帮助,谢谢

  • 写回答

1条回答 默认 最新

  • GPT_Pro 2023-02-24 18:21
    关注

    该回答内容部分引用GPT,GPT_Pro更好的解决问题
    首先,ab命令是Apache官方提供的一个性能测试工具,用于检测Web服务器的性能。在Windows系统下,当线程数量大于15时,会出现"apr_socket_recv: 你的主机中的软件中止了一个已建立的连接。 (730053)"这样的错误信息。

    这个错误一般由于服务器处理能力不足引起,导致服务器无法处理所有线程,从而出现上述错误。在同段网络中,由于同段网络之间的通信时间较短,因此可以较好地承受大量的并发访问。但是就异段网络而言,由于通信时间较长,因此吞吐量就会受到很大的影响,所以会出现上述情况。

    要解决这个问题,首先要检查服务器端是否有内存不足或者CPU不足的情况。如果有的话,可以考虑将服务器的内存和CPU进行扩容。并且可以考虑采用CDN加速来减少异地网络之间的通信时间,以达到提升吞吐量的目的。此外,也可以考虑在服务器端进行相应优化,如减少每个请求所需要的处理时间、使用Memcache来减少数据库查询、避免使用不必要的查询、优化SQL语句、使用Gzip来压缩静态文件等。

    // 代码片段1
    // 减少每个请求所需要的处理时间
    // 如使用Memcache来减少数据库查询
    $memcache = new Memcache;
    $memcache->connect('127.0.0.1', 11211);
    $data = $memcache->get('key');
    if ($data !== false) {
        // 如果数据存在缓存中,则直接从缓存中获取数据
        $data = $memcache->get('key');
    } else {
        // 如果数据不存在,则从数据库中获取数据
        $data = db_fetch($sql);
    
        // 并将数据存储到缓存中
        $memcache->set('key',$data,MEMCACHE_COMPRESSED,3600);  
    } 
    
    // 代码片段2
    // 使用Gzip来压缩静态文件
    if(extension_loaded('zlib')){   //判断php是否开启zlib  
        ob_start('ob_gzhandler');     //开启ob_gzhandler  
    }  
       header('Content-Type: text/css; charset=utf-8');   //定义文件头信息  
       header('Cache-Control: max-age=86400');      //定义文件有效期  
       header('Expires: '. gmdate('D, d M Y H:i:s', time() + 86400) . ' GMT');   //定义文件头信息  
    echo $data;     //定义css内容  
    if(extension_loaded('zlib')){   //判断php是否开启zlib  
        ob_end_flush();     //关闭ob_gzhandler  
    } 
    

    如果回答有帮助,望采纳。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月8日
  • 已采纳回答 2月28日
  • 创建了问题 2月24日

悬赏问题

  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同