持续集成工具 — Jenkins

Jenkins 是一个用 Java 编写的开源的持续集成(CI)工具,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。它运行在 Servlet 容器中(例如 Apache Tomcat)。它支持软件配置管理(SCM)工具(包括 AccuRev SCM、CVS、Subversion、Git、Perforce、Clearcase 和 RTC),可以执行基于 Apache Ant 和 Apache Maven 的项目,以及任意的 Shell 脚本和 Windows 批处理命令。

阅读更多
基于Jenkins实现项目部署

Jenkins 有很多中创建任务的方式,这里,我只测试了常用的三种方式,来实现简单的自动化部署,分别是 Freestyle、Pipeline、Open Blue Ocean。

假设,我们有一个项目,放在 Git 上维护,部署在 slave-web-1、slave-web-2 两台服务器上,基于 Jenkins , 来实现自动化部署。

阅读更多
Flink1.4安装

Apache Flink 是一个开源的分布式流处理和批处理系统。Flink 的核心是在数据流上提供数据分发、通信、具备容错的分布式计算。同时,Flink 在流处理引擎上构建了批处理引擎,原生支持了迭代计算、内存管理和程序优化。

阅读更多
接口QPS达到100K的压测过程

线上某服务接口QPS最高只能达到40K,架构中各层服务(Nginx、Tomcat、Dobbu、Redis/Mysql)的服务器负载都很低,横向扩展Nginx、Tomcat服务器,QPS不提升,增加压力,QPS和服务器负载还会下降。

阅读更多
高并发压力测试工具Tsung

Tsung是Erlang开发的一个开源的多协议分布式负载测试工具,它能用来压力测试HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP 和 Jabber/XMPP的服务器。它可以分布在多个客户机,并能够模拟成千上万的虚拟用户数并发。

阅读更多
使用火焰图做性能分析

火焰图(Flame Graph)是由 Linux 性能优化大师 Brendan Gregg 发明的。它是定位疑难杂症的神器,比如 CPU 占用高、内存泄漏等问题。

和所有其他的 traceprofiling 方法不同的是,Flame Graph 以一个全局的视野来看待时间分布,它从底部往顶部,列出所有可能的调用栈。

阅读更多
HTTP抓包测试

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

阅读更多
保持Keepalive

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

TCP 的 keepalive 是检查当前TCP连接是否活着。HTTP的 keepalive 是要让一个 TCP 连接活久点。

阅读更多
Linux下TCP/IP参数

Linux 内核参数考虑的是最通用场景,并不符合用于支持高并发访问的Web服务器的定义,所以需要修改Linux内核参数。其次,对 Nginx 的一些参数,也需要根据服务情况进行调整。

Unix/Linux 基本哲学之一就是 “一切皆文件”。要提高 TCP 并发量,需要调整文件句柄。

阅读更多
TCP/IP基础

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

阅读更多