首页 > 其他分享 >性能测试中故障排查及解决方法

性能测试中故障排查及解决方法

时间:2023-08-28 20:12:23浏览次数:37  
标签:Nginx 故障 转储 排查 线程 192.168 测试 报错 日志

引言: 在进行性能测试过程中,同事反馈报错率突然攀升。通过查看相关日志和服务器状态,发现了一些关键信息。本文将详细介绍导致报错率攀升的原因,并提供相应的解决方法。

1. 问题背景

在使用JMeter进行性能测试时,我们注意到报错率开始出现异常增长,这引起了我们的关注。为了找出问题所在,我们首先查看了Pinpoint监控和Nginx日志。

2. 分析结果

2.1 Pinpoint监控

从Pinpoint监控的反馈中,我们得到了以下错误信息:

502 Bad Gateway: "<html><EOL><EOL><head><title>502 Bad Gateway</title></head><EOL><EOL><body><EOL><EOL><center><h1>502 Bad Gateway</h1></center><EOL><EOL><hr><center>nginx/1.25.0</center><EOL><EOL></body><EOL><EOL></html><EOL><EOL>"

该错误表明网关出现问题,无法连接到上游服务器。进一步分析Nginx日志可以帮助我们了解更多情况。

2.2 Nginx日志

通过查看Nginx日志,我们发现大量的以下错误:

2023/08/24 15:27:36 [error] 1237#0: *2627178 no live upstreams while connecting to upstream, client: 192.168.0.98, server: , request: "GET /xxx/api/getxxx/Arxxx HTTP/1.1", upstream: "http://xxxserver/gaxxx/api/getxx/ArBxx", host: "192.168.0.96"

这些错误表明无法连接到上游服务器,并指向了一个具体的请求路径。进一步分析发现,无法连接的上游服务器为应用服务(192.168.0.98),而Nginx服务为192.168.0.96。

3. 问题定位与解决

通过以上分析,我们可以得出以下结论:

  • 报错率攀升是由于应用服务(192.168.0.98)无法连接到Nginx服务(192.168.0.96)引起的。
  • 应用服务日志未显示任何问题,因此需要进行更深入的排查。

3.1 线程转储操作

为了进一步分析问题,执行了线程转储操作。通过转储文件,发现大量的线程阻塞的情况。线程阻塞可能会导致应用程序无法正常处理请求,从而导致报错率上升。

Attaching to process ID 29674, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.191-b12
Deadlock Detection:

No deadlocks found.

Thread 6572: (state = BLOCKED)
 - sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
 - java.util.concurrent.ForkJoinPool.awaitWork(java.util.concurrent.ForkJoinPool$WorkQueue, int) @bci=350, line=1824 (Compiled frame)
 - java.util.concurrent.ForkJoinPool.runWorker(java.util.concurrent.ForkJoinPool$WorkQueue) @bci=44, line=1693 (Compiled frame)
 - java.util.concurrent.ForkJoinWorkerThread.run() @bci=24, line=157 (Interpreted frame)

3.2 优化措施

将转储文件发送给相应的产品开发人员进行分析和优化非常重要。开发人员可以通过分析线程状态、锁竞争等信息来确定阻塞的原因。他们可以采取以下措施来解决问题:

  • 优化代码逻辑:检查应用程序是否存在性能瓶颈,如循环、数据库操作等。
  • 减少线程阻塞:通过使用异步操作、线程池等技术减少线程阻塞情况。
  • 调整系统资源配置:检查应用服务器的内存、CPU等资源配置是否合理,并进行相应调整。

4. 总结

对于性能测试中报错率攀升的情况,我们通过分析Pinpoint监控、Nginx日志和线程转储文件,定位了问题所在并提出了相应的解决方法。及时监控系统状态、分析日志、执行线程转储操作以及优化应用程序都是关键的步骤。通过这些措施,我们可以改善系统性能,并确保系统能够稳定运行。

在进行性能测试过程中,我们应该充分利用各种工具和技术,及时发现和解决问题,确保系统在高负载情况下仍能保持可靠和高效。只有这样,我们才能提供优质的用户体验,并为系统的持续发展奠定坚实的基础。

标签:Nginx,故障,转储,排查,线程,192.168,测试,报错,日志
From: https://www.cnblogs.com/n00dle/p/17659316.html

相关文章

  • 软件项目测试报告如何评估费用,软件测试详细方案分享
    软件项目测试报告评估 软件项目测试报告的费用评估通常是根据测试范围、测试复杂度、测试功能点、测试工作量、测试机构的经验和知名度等因素来评估的。一、常用的软件项目测试报告评估方法:1、测试范围评估:根据项目的需求和目标,评估测试范围的大小和复杂度,以确定测试工作量......
  • 性能测试分为哪几种类型?
    在软件测试中性能测试是很重要的一项,一般来说性能是一种指标,表明软件系统或构件对其及时性要求的符合程度,也可以说性能是种特性,可以用时间来进行度量。性能的及时性用响应时间或吞吐量来衡量,响应时间是指服务器对请求作出响应所需要的时间。 系统性能包括时间和空间两个维度,时......
  • 测试代码
    usingSystem.IO.Compression;#pragmawarningdisable414,3021namespaceMyApplication{[Obsolete("...")]classProgram:IInterface{publicstaticListJustDoIt(intcount){Spannumbers=stackallo......
  • 企业新道路怎么走?火山引擎AB测试助力决策选择
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群乐刻是一家创立8年的企业,除了消费者熟悉的乐刻健身房可办月卡、24小时营业等,其还有比外界了解更多元的业务。目前,乐刻已在24个城市开出超1200家门店,注册会员数突破800万人,拥有乐刻健身、FEELINGME......
  • 《代码整洁之道》第 9 章 单元测试
    第9章单元测试9.1TDD三定律定律一:在编写不能通过的单元测试前,不可编写生产代码。定律二:只可编写刚好无法通过的单元测试,不能编译也算不通过。定律三:只可编写刚好足以通过当前失败测试的生产代码。9.2保持测试整洁测试代码和生产代码一样重要。它可不是二等公民。他......
  • 企业新道路怎么走?火山引擎AB测试助力决策选择
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 乐刻是一家创立8年的企业,除了消费者熟悉的乐刻健身房可办月卡、24小时营业等,其还有比外界了解更多元的业务。目前,乐刻已在24个城市开出超1200家门店,注册会员数突破800万人,拥有乐刻健......
  • 使用 Vitest 进行组件测试
    原文:试试使用Vitest进行组件测试,确实很香。参考:Vitest:https://cn.vitest.dev/guide/ui.html什么是Vitest?自从尤大的构建工具Vite获得了巨大的人气,现在有了一个由它驱动的极快的单元测试框架。Vitest。Vitest与Jest兼容,具有开箱即用的ESM、Typescript和JSX支持,并且......
  • 记录一次syst3md挖矿病毒排查过程
    公司服务器被挖矿了,idc处理也没处理干净,登陆服务器查看还是有残留的任务。[root@nfs~]#crontab-l@daily/dev/shm/.lr/1@reboot/dev/shm/.lr/run>/dev/null2>&1&disown@monthly/dev/shm/.lr/run>/dev/null2>&1&disown#确认服务器ps未被修改[root@nfs~]#rp......
  • 性能测试-磁盘-磁盘问题场景分析
    目录1、磁盘命令iostat-dx210-查看磁盘读写的扩展数据,2s采集一次,采集10次2、磁盘性能指标3、清除缓存命令 4、测试磁盘写速度步骤-跑多次 5、测试磁盘的读速度正文1、磁盘命令iostat-dx210-查看磁盘读写的扩展数据,2s采集一次,采集10次安装命令yuminstallsy......
  • 因为一台NUC怒学两天网络排查问题
    起源鄙人曾经认为自己不会乱花钱,第一个月工资发下来就上海鲜市场整了一台NUC,真香~我给它装了个archlinux,由于太菜,直接用了开源的GUIInstaller,我每天把它带到公司,带回家,贼喜欢。但是我发现,在公司的时候,无论如何也没法让我的macbookssh到arch上,它们连接了同一个wifi网络,在同一......