| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> Linux下Http高并发参数优化之TCP参数 -> 正文阅读 |
|
[网络协议]Linux下Http高并发参数优化之TCP参数 |
Linux 内核参数考虑的是最通用场景,并不符合用于支持高并发访问的Web服务器的定义,所以需要修改Linux内核参数。其次,对 Nginx 的一些参数,也需要根据服务情况进行调整。 在上一篇中,提到了Unix/Linux 基本哲学之一就是 “一切皆文件”。要提高 TCP 并发量,需要调整文件句柄。 文件句柄因为 Linux 系统为每个 TCP 建立连接时,都要创建一个 socket 句柄,每个 socket 句柄同时也是一个文件句柄。而系统对用户打开的文件句柄是有限制的,看到这里,也就理解了为什么在高并发时会出现 “too many open files”。 # 查看当前用户允许TCP打开的文件句柄最大数 ulimit -n # 修改文件句柄 vim /etc/security/limits.conf * soft nofile 655350 * hard nofile 655350 修改后,退出shell终端窗口,重新登录(不是重启服务器),即可查看到最新的结果。
上面的修改只是对用户的单一进程允许打开的最大文件数进行的设置。但是Linux系统对所有用户打开文件数也有限制(硬限制),一般情况下,不用修改此值。 # 查看所有用户打开文件数的最大限制(此值与硬件配置有关) cat /proc/sys/fs/file-max 但是,文件数再大,随着并发量的上升,也总有用完的时候。这时候再看 “文件都可以用「打开(open) –> 读写(write/read) –> 关闭(close)」模式来进行操作”这句话,就会想到,可以把已经用过的文件句柄释放掉,来减少资源的占用,这就又涉及到了资源重新利用和回收的问题。有时候查看端口有特别多的? TCP参数调优网上有很多关于? # 是否允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭,这个可以修改为开启 cat /proc/sys/net/ipv4/tcp_tw_reuse # 是否开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭 cat /proc/sys/net/ipv4/tcp_tw_recycle 所以,以上两个参数,在不是十分确定的场景情况下,不建议修改开启。 可以通过以下几个参数进行优化(个别参数值需要根据服务器配置调整,我的测试服务器配置为8核16G)。
从以上参数可以看出,Linux 内核为 TCP 发送和接收做了缓冲队列,以提高其吞吐量。 以上这些参数都是在?
本地端口号有时候我们修改了文件句柄限制数后,错误日志又会提示 “Can’t assignrequested address”。这是因为TCP 建立连接,在创建 Socket 句柄时,需要占用一个本地端口号(与 TCP 协议端口号不一样),相当于一个进程,便于与其它进程进行交互。而Linux内核的TCP/IP 协议实现模块对本地端口号的范围进行了限制。当端口号用尽,就会出现这种错误了。 我们可以修改本地端口号的范围。 # 查看IP协议本地端口号限制 cat /proc/sys/net/ipv4/ip_local_port_range #一般系统默认为以下值 32768 61000 #修改本地端口号 vim /etc/sysctl.conf #修改参数 net.ipv4.ip_local_port_range = 1024 65000 #保存修改后,需要执行sysctl命令让修改生效 sysctl -p
是不是设置了这些参数之后,并发性能就显著提升呢?答案是不一定。还需要看服务是否使用了长连接。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 19:32:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |