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 句柄同时也是一个文件句柄。而…

Java大文件切割与合并

在做日志收集和处理的时候,经常会遇到对大文件的操作,当内存有限,又要求快速处理的时候,就需要考虑对文件进行切割,利用多线程将一个大文件切割成多个小文件,然后再对小文件分别操作,这样既可以限制内存的使用,又可以提高效率。 切割与合并,可以使用RandomAccessFile类,它支持对随机访问文件的读取和写入,程序可以直接跳到任意地方来读写数据。 文件切割 大文件的上传、下载、内容处理等操作,都会涉及到文件切割处理。 文件切割的流程: 1、设定切割后的小文件大小,根据原文件大小…

利用Nginx实现用户数据收集

用户数据主要分客户端主动上报和业务服务数据。 客户端主动上报的需要在前段做数据埋点,服务端部署服务收集上报的数据,我们这里用Nginx做日志收集服务,因为对日志收集服务来说,最重要的稳定、高并发和吞吐量,不涉及业务逻辑,保证数据不丢失。而Nginx是不错的选择。 业务服务数据分很多种,一种是Nginx的访问日志,一种是业务数据库中存储的数据,还有业务服务输出的日志等。 这里介绍的用户数据主要基于浏览器和移动APP。 网站数据收集 默认能够收集的信息如下: 名字 途径 备注 访…

OpenResty安装

安装 创建不登录用户 安装依赖包 下载OpenResty 下载第三方模块包 安装LuaJIT 修改nginx-http-concat mod_concat模块由淘宝开发,目前已经包含在tengine中,并且淘宝已经在使用这个nginx模块。不过塔暂时没有包含在nginx中。这个模块类似于apache中的modconcat。如果需要使用它,需要使用两个”?”问号。 以上将原先3个请求合并为1个请求。 如果你担心文件被用户的浏览器缓存而没有及时更新,你依旧…

Git 自动部署

通过 Git hooks,可以实现服务的自动化部署,提高效率。 假设一个公司有员工 A 和员工 B,正式环境在外网服务器上,Gitlab 和测试环境在内网服务器。我们要实现员工用 Git 提交代码后,代码自动提交到内网和外网服务器,同时,完成相关服务器上代码的自动更新和服务的自动启动。 我的结构图大体如下: 实际情况,是不允许个人直接将代码提交到线上环境,并触发相关服务的。可能只允许提交到内网服务器,然后经过内网验证成功后,由运维人员再将代码提交到线上服务器。由于是个人项目,…

Blog内容发布设计

开发一套博客系统的话,主要分两部分。一部分是内容发布,另一部是内容展示。 内容发布需要一个编辑方便,所见即所得的编辑器,并能将编辑内容转成 Html 后保存起来。由于我想采用 Markdown 编辑,且不想实现 Markdown 内容转 Html 的开发(使用过 Python-markdown2,感觉并不是很理想),所以,我这里采用 MarkdownPad2 进行编辑,然后生成 Html 保存起来,由 Python 程序按照设计的规则解析成 Html,并存入数据库。(当然,我…