【压力测试 2】JMeter压力测试之Internal server error 500 问题解决思路(2)

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

解决方案:

HTTP SAMPLE 不勾选keep alive

三、Keep-Alive模式


我们知道Http协议采用“请求-应答”模式,当使用普通模式,即非Keep-Alive模式时,每个请求/应答,客户端和服务器都要新建一个连接,完成之后立即断开连接;当使用Keep-Alive模式时,Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。

http1.0中默认是关闭的,需要在http头加入”Connection: Keep-Alive”,才能启用Keep-Alive;

http 1.1中默认启用Keep-Alive,如果加入”Connection: close “才关闭。目前大部分浏览器都是用http1.1协议,也就是说默认都会发起Keep-Alive的连接请求了,所以是否能完成一个完整的Keep- Alive连接就看服务器设置情况。

开启Keep-Alive的优缺点:

优点:Keep-Alive模式更加高效,因为避免了连接建立和释放的开销。

缺点:长时间的Tcp连接容易导致系统资源无效占用,浪费系统资源。

四、自动重定向与跟随重定向


Redirect Automatically(自动重定向):只针对Get和Head请求,勾选此项则“跟随重定向”失效;自动重定向可以自动转向到最终目标页面,但是Jmeter是不记录重定向的过程内容,比如在察看结果树中是无法找到重定向过程内容的(A重定向到B,此时只记录B的内容不去记录A的内容)

Follow Redirects(跟随重定向):Http Request取样器的默认选项,当响应code是3xx时(301永久性转移,302暂时性转移),自动跳转到目标地址。与自动重定向不同,Jmeter会记录重定向过程中的所有请求响应,在查看结果树时可以看到服务器返回的内容,所以此时可以对响应的内容做关联。

五、internal server error是什么意思?


internal server error错误通常发生在用户访问网页的时候发生,该错误的意思是因特网服务错误。能够引起internal server error报错的原因有多个,如果你是网站主的话,可以对下列情形进行一一排查。

1、服务器资源超载

如果网站文件没有做过修改,最有可能的是同服务器的资源超载:即同一时间内处理器有太多的进程需要处理的时候,会出现500错误。借助SSH,可以在命令行中输入以下命令查看:ps faux ps faux |grep username 如果你查到某个进程消耗过多资源,可以用kill命令强制关闭这个进程,只需输入该进程的进程号(Pid):kill -9 pid。

2、文件权限设置错误

500错误还有可能是对文件设置了不正确的权限:后台目录和文件的权限默认应该是755,而图片,文字等html文件应该是644,所以如果在刚刚上传文件后出现500错误,应该主要检查文件权限设置。可以使用FTP软件选中所有文件,然后批量修改文件权限。

3、htaccess文件写入错误的代码

在使用某些wordpress SEO插件的时候,插件会改写.htacess文件,如果语法错误的话就有可能造成500错误!

六、Internal server error 500 问题解决思路


1、明确错误含义

500 Internal Server Error

通用错误消息,服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。没有给出具体错误信息。

根据这个描述,基本可以排除客户端以及网络因素,需要重点关注服务端的状态。

我们系统服务端的架构如下图:

接下来就要根据这个架构由前往后一层一层排查。

2、检查HAProxy

重点排查HAProxy当前是否可用,负荷是否超标,包括下面的一些指标。

| 排查项 | 结果 |

| — | — |

| CPU是否正常 | 正常 |

| 内存是否正常 | 正常 |

| 线程数是否超过配置上限 | 正常 |

| 连接数是否超过配置上限 |

正常

|

排查之后发现一切正常,与版本更新前的数据作比较,也没有出现大幅度波动。

而在查看请求日志时,发现大量500错误信息,说明HAProxy出异常的可能性较小,错误更可能来自HAProxy之后的环节。

3、检查Jetty

重点排查jetty的配置信息。

| 排查项 | 结果 |

| — | — |

| 配置是否有变动 | 正常 |

| 应用占用的线程数是否超过上限 | 正常 |

| 应用占用的线程数是否超过上限 | 正常 |

虽然jetty配置信息检查正常,但是在access.log中存在大量500错误,定位到这里,有两种可能的原因:

应用代码逻辑问题。部分异常信息没有被拦截住,直接抛给Jetty,导致500错误。

Jetty逻辑问题。请求没有到达应用,而是由于Jetty自身的某些逻辑导致请求被直接返回了。

4、检查应用

为了验证是否第一个原因,我们继续走查了应用代码,发现所有的异常都被正确处理了,不存在继续往上抛的情况。另外,也检查了图片保存的代码,确认文件连接都正确释放了。

因此,由于应用逻辑问题导致错误的可能性很小,那么第二个原因的嫌疑最大,就是Jetty逻辑问题。

如果直接排查Jetty的源码,太费时费力,这个时候最好的办法是实时抓包,看看Jetty和应用服务之间到底发生了什么。

5、使用tcpdump抓包

使用tcpdump命令抓取从jetty到应用服务之间所有的数据包,将结果输出到临时文件中。

tcpdump -i eth0:0 -s0 host 1X.XXX.XXX.XX -w /tmp/out1.cap

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

  • 17
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要使用JMeter连接SQL Server数据库,需要进行以下步骤: 1. 下载并安装Microsoft JDBC驱动程序,该驱动程序可从Microsoft官方网站下载。 2. 将下载的JDBC驱动程序复制到JMeter的lib目录下。 3. 在JMeter中创建一个新的测试计划。 4. 添加一个JDBC连接配置元件,配置数据库连接信息,包括数据库URL、用户名和密码等。 5. 添加一个JDBC请求元件,配置SQL查询语句。 6. 运行测试计划,查看测试结果。 需要注意的是,JMeter连接SQL Server数据库时需要使用正确的JDBC驱动程序和正确的数据库连接信息,否则将无法连接到数据库。 ### 回答2: JMeter是一款性能测试工具,可模拟多种协议和应用程序来进行测试。在某些情况下,我们需要连接SQL Server数据库来执行各种查询和事务操作进行性能测试。以下是连接SQL Server数据库的步骤: 1. 下载并安装Microsoft JDBC驱动程序 在JMeter中连接SQL Server数据库需要使用Microsoft JDBC驱动程序。你可以从Microsoft官方网站下载最新的驱动程序并安装。 2. 添加JDBC连接配置 在JMeter中添加JDBC连接配置将允许JMeter与SQL Server数据库建立连接。 在测试计划中,右键点击“添加”-“配置元素”-“JDBC连接配置”。 在“JDBC连接配置”中,输入以下设置: 名称:连接名称 变量名称:jdbc_connection(自定义名称) 驱动器:com.microsoft.sqlserver.jdbc.SQLServerDriver URL:jdbc:sqlserver://[YourServerName[\instanceName][:portNumber]][;property=value[;property=value]] 例:jdbc:sqlserver://localhost:1433;databaseName=YourDatabaseName 用户名:你的SQL Server数据库的用户名。 密码:你的SQL Server数据库的密码。 3. 添加JDBC请求 在测试计划中,右键点击“添加”-“取样器”-“JDBC请求”。 在“JDBC请求”中,输入以下设置: 查询类型:选择你要执行的查询类型。 查询:输入你的SQL查询。 变量名称:自定义变量名称。 JDBC连接配置:选择步骤2中添加的JDBC连接配置。 参数名称:自定义查询参数名称。 参数值:输入查询参数值。 4. 运行测试 转到测试计划并运行测试。 使用这些步骤,你可以在JMeter中连接SQL Server数据库并执行查询。你可以使用这些查询测试数据库的性能,以查看它如何受到不同查询类型和负载的影响。 ### 回答3: JMeter是一款流行的测试工具,在进行接口测试时,我们往往需要连接数据库来获取测试数据和验证结果。而对于使用Microsoft SQL Server数据库的用户,该如何在JMeter中连接数据库呢? 以下是一些简单的步骤: 1. 首先,确保你已经安装了JDBC驱动程序:Microsoft SQL Server JDBC驱动程序(可从Microsoft官网下载获取)。 2. 在JMeter的“lib”文件夹中创建一个新文件夹,将下载的JDBC驱动程序拷贝到该文件夹中。 3. 在JMeter中创建一个新的线程组,并添加一个JDBC连接配置元件。在该元件中设置连接数据库的相关属性,如下所示: -数据库驱动程序类:com.microsoft.sqlserver.jdbc.SQLServerDriver -JDBC URL:jdbc:sqlserver://<hostname>:<port>;DatabaseName=<database> -用户名和密码 请注意替换<hostname>、<port>、<database>和用户名密码为你的信息。 连接合法性测试可供验证您的属性是否正确配置。 4. 在测试计划中添加一个JDBC请求元件,并设置SQL查询语句。例如,你可以使用以下语句查询数据: SELECT * FROM <tablename> WHERE <fieldname>=<value> 5. 启动测试,并查看日志和结果,确保您的测试执行成功。 总之,连接数据库需要JDBC驱动程序和合适的链接属性,同时注意设置测试查询语句,并启动测试程序来验证执行结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值