** 若TIME_WAIT事件设置过短, 会导致错误后果 TIME_WAIT结束过早, 导致之前迷失的第三次握手突然到达, 新连接突然成功
在开发 socket 应用程序时,首要任务通常是确保可靠性并满足一些特定的需求。利用本文中给出的 4 个提示,您就可以从头开始为实现最佳性能来设计并开发 socket 程序。本文内容包括对于 Sockets API 的使用、两个可以提高性能的 socket 选项以及 GNU/Linux 优化。
nginx作为最优秀的web服务器之一,以轻量级,高并发而著称,用户遍及全球各地。下面来讲述一下nginx常规的一些优化。仅供参考! 并发数调整 谈到web服务器,并发是一个无法规避的问题。那我们来看一下nginx的并发数是如何设置的。 nginx并发数调整,主要有取决于worker_processes和worker_connections参数,下面介绍关于ngnix性能优化全局设置的相关参数。 worker_processes:指定nginx开启的进程数,默认是1。每个进程消耗约12M左右的内存。进程数
典型TCP数据包有一个最大窗口大小为64KB的窗口域。这在因特网发展初期,大部分系统都没有能力处理比这更大的数据,因此这个大小是足够的,但是对于现在的接入带宽应用来说,这已经太小了。
在之前的一篇文章中,作者在配置了SO_REUSEPORT选项之后,使得应用的性能提高了数十倍。现在介绍socket选项中如下几个可以提升服务端性能的选项:
lsof(list open files)用于查看进程打开的文件,是十分方便的系统监测工具。因为 lsof 命令需要访问核心内存和各种系统文件,所以需要 root 权限才可执行。
上周Linux内核修复了4个CVE漏洞[1],其中的CVE-2019-11477感觉是一个很厉害的Dos漏洞,不过因为有其他事打断,所以进展的速度比较慢,这期间网上已经有相关的分析文章了。[2][3]
作者:Hcamael@知道创宇 404 实验室 时间:2019 年 6 月 26 日 英文版本:https://paper.seebug.org/967/
http://blog.csdn.net/hguisu/article/details/8930668 (排名100多bolg写的很好)
由于默认的Linux内核参数考虑的是最通用场景,这明显不符合用于支持高并发访问的Web服务器的定义,所以需要修改Linux内核参数,是的Nginx可以拥有更高的性能;
为了让系统能够支持更大的并发,除了必须安装event扩展之外,优化linux内核也是重中之重。
前几天群里有个同学问,“如何让应用层强制发送RST中止连接”,而不是通过FIN包的四次交互来关闭连接。当时,我只是凭借以往的经验,猜测使用linger选项可以做到。之所以这么猜测,完全是出于对TCP和linger的理解。
作者Liam,海外老码农,对应用密码学、CPU微架构、高速网络通信等领域都有所涉猎。
————————————————————————————————————————————————
Linux是一款强大的操作系统,被广泛应用于各种环境中本文将深入探讨Linux性能优化的多个方面,包括系统监控、进程管理、内存管理、磁盘I/O优化、网络性能优化等,并通过具体代码示例进行实践。
前几天,我厂剑英和晓培同学在定位一个TCP通信失败问题时,发现原因是客户端发送的TCP数据过长(1460字节),导致数据包无法成功发送到服务端。但通过抓包发现,在三次握手时,双方协商的MSS就是1460。那么,应该是在这个连接的传输过程中,数据包的传输路径发生了变化,走了不同的中间设备,从而导致协商时的MSS大小已经超过了实际的传输路径限制。因为客户端已经发布,我们通过修改服务端的对外接口的MTU,暂时解决了这样的问题。
里面kernel-ml-5.3.8-1.el7.elrepo.x86_64就是安装的新版版本内核(你看到这篇教程的时候可能内核版本有变化,随机应变)
TCP BBR 是 Google 于2016年所发布网络拥塞控制算法,用于尽可能提高带宽利用率。随着时间的推移 TCP BBR 已经来到了 v3 版本,但因为尚处于测试阶段所以目前相关代码并没有汇入主线内核中。现阶段如果需要提前体验 BBR v3 的话手动编译内核是免不了的。不过好在编译并不复杂,在此便做个记录以供参考。
TCP 性能的提升不仅考察 TCP 的理论知识,还考察了对于操作系统提供的内核参数的理解与应用。
基本不会介绍BBR的原理,需要详细了解,可以访问research,我技术并不够优秀,很难解释清楚,还请见谅!
本次实验环境是Linux2.6.35内核的环境下,下载并重新编译内核源代码(2.6.36);然后,配置GNU的启动引导工具grub,成功运行编译成功的内核。
之前有个读者在秋招面试的时候,被问了这么一个问题:SYN 报文什么时候情况下会被丢弃?
客户端在建立连接时会首先发送SYN报文,但是假设此时你没有收到服务端SYN+ACK的响应报文,客户端此时会重传SYN报文,此时你需要根据实际情况来调整SYN报文的重传次数,以便客户端能够及时得到反馈。
为了让系统能够支持更大的并发,除了必须安装event扩展之外,优化linux内核也是重中之重,以下优化每一项都非常非常重要,请务必按逐一完成。
menuconfig是一套图像化配置工具,由ncurses库提供软件支持。ncurses库提供了一系列的函数以便使用者调用它们去生成基于文本的用户界面。 menuconfig本身的软件只负责提供menuconfig工作的这一套逻辑,比如说通过上下左右调整光标,Enter选中等,并不负责提供内容。menuconfig运行之后会读取Kconfig、读取/写入.config文件,Kconfig提供菜单项的内容,.config用来记录菜单项的选择值。 2.用法
今天稍微了解了LVS 的原理和使用,在网络上找到不少好文章,稍微加以处理并在这里备份:
在前面两篇文章中,我们研究了在TCP三次握手时MSS选项的值:一般情况下,都是由出口路由的MTU大小决定:MTU-40。也就是说,TCP在握手阶段,通过MSS选项,通知对端本端可以接收的最大报文长度是多少。
# 允许更多的PIDs (减少滚动翻转问题); may break some programs 32768
对于TCP的初始接收窗口大小,linux和centos的实现是不一样的,如linux内核3.10版本的初始接收窗口定义为10mss,但centos 3.10内核中的初始窗口大小定义为TCP_INIT_CWND * 2,即20*MSS大小。(看着linux源码在centos7.4系统上测试,纠结了好久。。)
他抓到一个抓包图,客户端和服务端四次挥手后,客户端在 17 秒内又复用了与上一次连接相同的端口,向服务端发起了 SYN 报文, 并成功建立了连接。
一、前言 1) Linux Proc文件系统,通过对Proc文件系统进行调整,达到性能优化的目的。 2) Linux性能诊断工具,介绍如何使用Linux自带的诊断工具进行性能诊断。 加粗斜体表示可以直接运行的命令。 下划线表示文件的内容。 二、/proc/sys/kernel/优化 1) /proc/sys/kernel/ctrl-alt-del 该文件有一个二进制值,该值控制系统在接收到ctrl+alt+delete按键组合时如何反应。这两个值分别是: 零(0)值,表示捕获ctrl+alt+delete,并将其送至 init 程序;这将允许系统可以安全地关闭和重启,就好象输入shutdown命令一样。 壹(1)值,表示不捕获ctrl+alt+delete,将执行非正常的关闭,就好象直接关闭电源一样。
一、 操作系统提供的网络接口 为了能更好的排查网络通信问题,我们需要熟悉操作系统提供的以下网络接口函数,列表如下: 接口函数名称接口函数描述接口函数签名socket创建套接字int socket(int domain, int type, int protocol);connect连接一个服务器地址int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);send发送数据ssiz
Linux作为一个强大的操作系统,提供了一系列内核参数供我们进行调优。光TCP的调优参数就有50多个。在和线上问题斗智斗勇的过程中,笔者积累了一些在内网环境应该进行调优的参数。在此分享出来,希望对大家有所帮助。
DAS 指 Direct Attached Storage,即直连附加存储,这种设备直接连接到计算机主板总线上,计算机将其识别为一个块设备,例如常见的硬盘,U 盘等,这种设备很难做到共享。
为了能更好的排查网络通信问题,我们需要熟悉操作系统提供的以下网络接口函数,列表如下:
因为Linux是一个通用的操作系统,所以其运行环境也是为了通用环境设计的,不会太好,也不会太坏,因为其要默认兼容大部分环境。因此在做服务端部署的时候,都需要对Linux的系统参数进行一番调整。
Windows 网络调优,微软一般是不建议的,默认设置就是最佳的,一般不需要调,可能越调越不好了,如果非要调,用TCPOptimizer这个软件,支持所有windows系统
LVS(linux virtual server)即linux虚拟服务器,由章文嵩博士主导开发的开源负载均衡项目,从2.6内核开始已经被集成到linux内核模块中了,该项目在linux内核中实现了基于IP的数据请求负载均衡调度方案,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台web服务器,如果后端的所有web服务器存储的内容时相同的,那么用户不管访问哪台真实的web服务器得到的内容也都是相同的,所以整个集群对于用户而言是透明的。最后根据工作模式不同,真实服务器会选择不同的方式将用户需要的数据发送给终端用户。
上月初,启明星辰ADLab提交了四个存在于Linux内核的远程漏洞,并命名为“Phoenix Talon”;其中一个漏洞为严重(Critical)级别,另外三个为高危(High)。昨天ADLab公布了其中严重(Critical)漏洞的相关细节。这四个漏洞的影响范围包括所有Linux kernel 2.5.69 ~ Linux kernel 4.11的内核版本。 根据启明星辰的介绍,漏洞可导致远程DOS,在符合一定利用条件下可导致远程代码执行,包括传输层的TCP、DCCP、SCTP以及网络层的IPv4和I
Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(location是Nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。
说明:对于CentOS系统的BBR魔改之前搬运过南琴浪大佬的脚本,无奈出现了BUG,导致CentOS安装还存在着问题,前几天友链博主千影,也写出了一个魔改BBR脚本,脚本包含BBR+BBR魔改版+Lotsever(锐速),同时支持Centos、Debian、Ubuntu系统,很方便,也很强大。
start_kernel是内核启动阶段的入口,通过单步调试,可以发现它是linux内核执行的第一个init,我们单步进入看看它做了哪些操作:
在原来配置的基础上,make menuconfig选中如下选项重新配置Linux,使之携带调试信息
Linux系统防火墙功能是由内核实现的,从2.4版本之后的内核中,包过滤机制是netfilter,管理工具是iptables
本章与之后文章将会持续更新Linux服务器系列的优质文章,本章将会讲解Linux操作系统安装及服务控制。
原文链接:https://rumenz.com/rumenbiji/linux-route.html
转载自: http://blog.sina.com.cn/s/blog_781b0c850100znjd.html
领取专属 10元无门槛券
手把手带您无忧上云