[转帖]apr_socket_recv: Connection reset by peer 错误

apr,socket,recv,connection,reset,by,peer,错误 · 浏览次数 : 0

小编点评

**问题分析** 在使用 Apache Bench 进行性能测试时,出现 `apr_socket_recv: Connection reset by peer` 错误。通过搜索,发现问题可能与 `apr` 组件的错误配置有关。 **解决方案** 1. **下载并编译`apr` 和 `apr-utils` 代码** - 下载所需代码:`apt download apache-openssl-dev` 或 `yum install apache-openssl-dev` 2. **修改`ab.c`文件** - 在 `ab.c` 文件中找到 `APR_SOCKET_RECV` 错误处理段,并将其改为以下代码: ```c else if (status != APR_SUCCESS) { err_recv++; if (recverrok) { bad++; close_connection(c); if (verbosity >= 1) { char buf[120]; fprintf(stderr, "%s: %s (%d)\\", "apr_socket_recv", apr_strerror(status, buf, sizeof buf), status); } return; } else { // Handle APR_SUCCESS status return; } } ``` 3. **重新编译和安装`ab`** - 修改完 `ab.c` 文件,重新编译和安装 `ab`。 4. **重新编译和安装`apr`** - 下载 `apr-1.4.8.tar.gz` 和 `apr-util-1.5.2.tar.gz` 文件,并解压缩它们到 `apr` 和 `apr-utils` 中。 5. **设置`$APR_HOME`环境变量** - 在编译过程中设置 `$APR_HOME` 环境变量,指向 `apr` 编译器的安装目录。 6. **重新编译`ab`** - 重新编译 `ab` 编译器,并将生成的 `ab` 文件替换原始的 `ab` 文件。 **注意** - 使用的 `ab` 版本可能与 Apache Bench 版本有关,因此可能需要使用相同的版本。 - 改进后的代码可能对 `ab` 性能有轻微影响,但应该能解决问题。

正文

用ab做性能测试.

并发请求量稍微高一点(200,300以上)就会报apr_socket_recv: Connection reset by peer 的错.

刚开始以为apache服务器设置有问题. 网上一顿找, 结果你也懂的. 按照咱国家特殊国情惯例, 都是同一篇文章考来考去.

最后还是找到一个靠谱点的解决方法.


如果有同上的问题, 不要犹豫, ab必须要重新编译安装了. 至于用yum安装httpd的. 也不例外, 也需要新编译安装ab和apr了.

如果你是通过编译安装的修改ab.c文件后重新编译安装也有同样问题. 我想应该是apr的问题.

具体错误在哪里也没研究. 下面方法能解决这个问题.


1. 下载所需要的源码

apr和apr-utils

http://apr.apache.org/download.cgi 

ab源码可以到这里下载

https://code.google.com/p/apachebench-standalone/downloads/list


2. 编译安装

$ mkdir ab
$ mkdir apr
$ mkdir apr-utils

$ cd ab
$ wget https://apachebench-standalone.googlecode.com/files/ab-standalone-0.1.tar.bz2
$ tar -xvf ab-standalone-0.1.tar.bz2
$ cd ../apr

$ wget http://apache.etoak.com//apr/apr-1.4.8.tar.gz
$ tar -xvf apr-1.4.8.tar.gz
$ cd ../apr-utils
$ wget http://apache.etoak.com//apr/apr-util-1.5.2.tar.gz
$ tar -xvf apr-util-1.5.2.tar.gz





先编译apr

$ cd apr/apr-1.4.8
$ ./configure
$ make
$ make install


编译apr-utils

$ cd apr-utils/apr-util-1.5.2
$ ./configure --with-apr=/usr/local/apr
$ make
$ make install


编译ab

先修改ab.c文件

$ cd ab/ab-standalone
$ vim ab.c


到 :1380 行

修改成如下.

  1. /* catch legitimate fatal apr_socket_recv errors */
  2. else if (status != APR_SUCCESS) {
  3. err_recv++;
  4. if (recverrok) {
  5. bad++;
  6. close_connection(c);
  7. if (verbosity >= 1) {
  8. char buf[120];
  9. fprintf(stderr,"%s: %s (%d)\n", "apr_socket_recv", apr_strerror(status, buf, sizeof buf), status);
  10. }
  11. return;
  12. } else {
  13. //apr_err("apr_socket_recv", status); // 从这开始
  14. bad++;
  15. close_connection(c);
  16. return; // 到这里
  17. }
  18. }


改完后
$ make apr-skeleton
$ make ab

就可以了.

把之前的ab替换掉一个软连接或者直接在编译后的目录上用都可以.

参考

https://code.google.com/p/apachebench-standalone/wiki/HowToBuild

与[转帖]apr_socket_recv: Connection reset by peer 错误相似的内容:

[转帖]apr_socket_recv: Connection reset by peer 错误

用ab做性能测试. 并发请求量稍微高一点(200,300以上)就会报apr_socket_recv: Connection reset by peer 的错. 刚开始以为apache服务器设置有问题. 网上一顿找, 结果你也懂的. 按照咱国家特殊国情惯例, 都是同一篇文章考来考去. 最后还是找到一个

[转帖]Linux学习14-ab报错apr_pollset_poll: The timeout specified has expired (70007)

https://www.cnblogs.com/yoyoketang/p/10255100.html 前言 使用ab压力测试时候出现报错apr_pollset_poll: The timeout specified has expired (70007),本篇总结了几个ab常见的报错和对应解决办法当

[转帖]

Linux ubuntu20.04 网络配置(图文教程) 因为我是刚装好的最小系统,所以很多东西都没有,在开始配置之前需要做下准备 环境准备 系统:ubuntu20.04网卡:双网卡 网卡一:供连接互联网使用网卡二:供连接内网使用(看情况,如果一张网卡足够,没必要做第二张网卡) 工具: net-to

[转帖]

https://cloud.tencent.com/developer/article/2168105?areaSource=104001.13&traceId=zcVNsKTUApF9rNJSkcCbB 前言 Redis作为高性能的内存数据库,在大数据量的情况下也会遇到性能瓶颈,日常开发中只有时刻

[转帖]ISV 、OSV、 SIG 概念

ISV 、OSV、 SIG 概念 2022-10-14 12:29530原创大杂烩 本文链接:https://www.cndba.cn/dave/article/108699 1. ISV: Independent Software Vendors “独立软件开发商”,特指专门从事软件的开发、生产、

[转帖]Redis 7 参数 修改 说明

2022-06-16 14:491800原创Redis 本文链接:https://www.cndba.cn/dave/article/108066 在之前的博客我们介绍了Redis 7 的安装和配置,如下: Linux 7.8 平台 Redis 7 安装并配置开机自启动 操作手册https://ww

[转帖]HTTPS中间人攻击原理

https://www.zhihu.com/people/bei-ji-85/posts 背景 前一段时间,公司北京地区上线了一个HTTPS防火墙,用来监听HTTPS流量。防火墙上线之前,邮件通知给管理层,我从我老大那里听说这个事情的时候,说这个有风险,然后意外地发现,很多人原来都不知道HTTPS防

[转帖]关于字节序(大小端)的一点想法

https://www.zhihu.com/people/bei-ji-85/posts 今天在一个技术群里有人问起来了,当时有一些讨论(不完全都是我个人的观点),整理一下: 为什么网络字节序(多数情况下)是大端? 早年设备的缓存很小,先接收高字节能快速的判断报文信息:包长度(需要准备多大缓存)、地

[转帖]awk提取某一行某一列的数据

https://www.jianshu.com/p/dbcb7fe2da56 1、提取文件中第1列数据 awk '{print $1}' filename > out.txt 2、提取前2列的文件 awk `{print $1,$2}' filename > out.txt 3、打印完第一列,然后打

[转帖]awk 中 FS的用法

https://www.cnblogs.com/rohens-hbg/p/5510890.html 在openwrt文件 ar71xx.sh中 查询设备类型时,有这么一句, machine=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {print $2}' /