async-profiler使用

简介 async-profiler 是一款低开销采集分析 java 性能的工具。它利用HotSpot特殊的 api 来收集栈信息以及内存分配信息,可以在OpenJDK,Oracle JDK以及一些其他的基于 HotSpot 的 java 虚拟机。async-profiler 可以追踪以下几种事件: cpu 周期; 硬件和软件性能计数器,例如高速缓存未命中,分支未命中,页面错误,上下文切换等; Java 堆中内存的分配; 锁尝试,包括 Java 对象监视器和 Reentrant…

QPS 100K压测报告

1、现状说明 线上服务器QPS最高只能达到40K,架构中各层服务(Nginx、Tomcat、Dobbu、Redis/Mysql)的服务器负载都很低,横向扩展Nginx、Tomcat服务器,QPS不提升,增加压力,QPS和服务器负载还会下降。 无法知道架构的瓶颈在哪一层,各层服务的瓶颈值是多少,导致无法根据用户量来预估服务器的数量。 2、测试目标 测试出各层服务的瓶颈值 测试出当前架构能达到的QPS QPS达到100K时,是否需要扩展或调整架构,怎么调整 3、测试计划 阶段 测…

性能压测与调优总结

为了知道我们的单个服务和整体服务的性能,以便掌握大体情况,以及为以后调整部署方案做评估依据,我们对所有的服务进行了逐级的压测。原以为是个简单的事情,做的过程中才发现要解决好多问题,真不是一项简单的工作。由于之前对压测并不是很了解,很多问题都是遇到后临时Google学习,所以,有一些问题并没有深入理解。 到目前为止,这里的总结是对压测过程和思路的梳理,很多地方并不专业和详细,记录下来,是为以后再做这类事情时,一可以用它来给自己做参考,二来可以继续完善和总结经验。 1、服务说明 …

高并发压力测试工具Tsung

Tsung是Erlang开发的一个开源的多协议分布式负载测试工具,它能用来压力测试HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP 和 Jabber/XMPP的服务器。它可以分布在多个客户机,并能够模拟成千上万的虚拟用户数并发。 最近在做业务的横向扩展测试和业务接口的性能优化,期望QPS能达到C100K的目标。平时简单的压力测试,使用的是 ab 轻量级测试工具。但是,正式测试时,涉及到多接口、高并发等要求测试,就需要使用专业的、重量级的测…

Linux下Http高并发参数优化之抓包测试

各种参数设置都调好了,剩下的就是测试。先测试 keepalive 是否生效。虽然参数都按照理论进行一番设置,但由于涉及的环节太多,保不齐哪个地方抽风,就会导致各种问题。所以,测试验证一下比较保险。用 Wireshark 的强大抓包分析功能,可以清晰的看到服务的网络通信过程,也可以加深对 TCP/IP 协议的理解。 抓包分析用的 Wireshark,功能很强大。目前,我只会简单的使用,但对验证 keepalive 的测试够用了。 该工具可以在客户端上使用,也可以在服务端通过&n…

Linux下Http高并发参数优化之keepalive

 Linux 系统参数设置后,应用服务的并发量并不会出现显著的提升。这是因为应用服务一般都是采用 HTTP 协议,而 HTTP 是一种无状态的、基于请求+响应的协议。也就是俗称的 “短连接”,对应的解决方案是 “长连接”。长连接用到 `keepalive` ,它又分 TCP keepalive 和 HTTP keepalive 。 TCP 的 keepalive 是检查当前TCP连接是否活着。 HTTP的 keepalive 是要让一个 TCP 连接活久点。 TCP…

Linux下Http高并发参数优化之TCP/IP基础

最近在做 Nginx 压力测试时,需要对 Linux 系统参数进行调整,网上很多参数设置,都是互相 Copy,没有详细说明。我也只好照着 Copy 调试了一边,莫名其妙的就好使了。应了最近学到的一句话「My Code Works I Don’t Know Why」。既然能好用,那就先用着了吧。这两天正好有时间做总结,Google 各种疑惑,就对其中的一些知识点进行了梳理和扫盲。 起因 虽然经常说到TCP/IP协议,但是真正直接用它们的机会没有。现在很多框架、语言,…

Linux下Http高并发参数优化之TCP参数

 Linux 内核参数考虑的是最通用场景,并不符合用于支持高并发访问的Web服务器的定义,所以需要修改Linux内核参数。其次,对 Nginx 的一些参数,也需要根据服务情况进行调整。 在上一篇中,提到了Unix/Linux 基本哲学之一就是 “一切皆文件”。要提高 TCP 并发量,需要调整文件句柄。 文件句柄 因为 Linux 系统为每个 TCP 建立连接时,都要创建一个 socket 句柄,每个 socket 句柄同时也是一个文件句柄。而…