Nginx调优,有这篇就够了
目录
1. 工作进程数量
2. Nginx最大打开文件数
3. Nginx事件处理模型
4. 开启高效传输模式
5. 连接超时时间
6. proxy调优
7. fastcgi 调优
8. gzip 调优
9. expires 缓存调优
10. 防盗链
11. 内核参数优化
1. 工作进程数量
#根据cpu个数自动调整工作进程数量
worker_processes auto;
2. Nginx最大打开文件数
这个指令是指当一个nginx worker进程打开的最多文件描述符数目
worker_rlimit_nofile 65535;
注:文件资源限制的配置可以在/etc/security/limits.conf设置,针对root/user等各个用户或者*代表所有用户来设置。用户重新登录生效(ulimit -n)
1.用户级别限制(用户最大能打开的文件数)
#立即生效配置
ulimit -n 65536
#永久配置,重启生效
vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
2.进程级别限制(每个进程最大能打开的文件数)
vim /etc/sysctl.conf
fs.nr_open = 65535
sysctl -p
3.系统级别限制(系统最大能打开的文件数)
vim /etc/sysctl.conf
fs.file-max = 999999
sysctl -p
3. Nginx事件处理模型
events { use epoll; worker_connections 65535; multi_accept on;
}use epoll;
nginx采用epoll事件模型,处理效率高。worker_connections 65535;
是单个worker进程允许客户端最大连接数,这个数值一般根据服务器性能和内存来制定,
理论上每台nginx服务器的最大连接数为worker_processes*worker_connections。实际我们填入一个65535,足够了,这些都算并发值,一个网站的并发达到这么大的数量,也算一个大站了!multi_accept on;
on:默认值,告诉nginx收到一个新连接通知后接受尽可能多的连接,
当你的服务器连接数不多时,on会导致负载不平衡,但是对于高并发场景下的性能提升非常有帮助
4. 开启高效传输模式
http { include mime.types; default_type application/octet-stream; …… sendfile on; tcp_nopush on; ……
} Include mime.types :Nginx使用mime.types文件来识别和处理各种文件类型的请求,include指令用于在当前文件中包含另一个文件内容。default_type application/octet-stream :用于指定响应前端请求时默认的MIME类型。当Nginx遇到未知的文件类型或者没有相应的MIME类型配置时,会使用default_type指定的类型application/octet-stream是一种通用的二进制数据类型,浏览器通常会将其视为文件并提示用户下载sendfile on:开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。tcp_nopush on:必须在sendfile开启模式才有效,防止网路阻塞,积极的减少网络报文段的数量(将响应头和正文的开始部分一起发送,而不一个接一个的发送。)
5. 连接超时时间
主要目的是保护服务器资源,CPU,内存,控制连接数,因为建立连接也是需要消耗资源的。
keepalive_timeout 60;
tcp_nodelay on; #用于缓存静态文件的元信息,以提升网站访问速度和处理请求的能力
open_file_cache max=102400 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 1;
open_file_cache_errors on;client_header_buffer_size 4k;
client_header_timeout 15;
client_body_buffer_size 8k;
client_body_timeout 15;
client_max_body_size 10m; reset_timedout_connection on;
send_timeout 15;
server_tokens off;
keepalive_timeout 60;
HTTP 是一种无状态协议,客户端向服务器发送一个 TCP 请求,服务端响应完毕后断开连接。
如果客户端向服务器发送多个请求,每个请求都要建立各自独立的连接以传输数据。
HTTP 有一个 KeepAlive 模式,它告诉 webserver 在处理完一个请求后保持这个 TCP 连接的打开状态。
若接收到来自客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。
KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能。
Nginx 使用 keepalive_timeout 来指定每个TCP 连接最多可以保持多长时间。Nginx 的默认值是 75 秒,
有些浏览器最多只保持 60 秒,所以可以设定为 60 秒。若将它设置为 0,就禁止了 keepalive 连接。tcp_nodelay on;
允许小的TCP包立即发送,减少网络延迟,防止网络阻塞,不过要包涵在keepalived参数才有效。
可能会增加网络负载,需谨慎使用。适用于需要低延迟的场景。实时性要求高的应用,如在线游戏、视频会议等。
需要快速响应的网络服务,如在线交易系统。client_header_buffer_size 4k;
客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过 1k,
不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得。
---------------------------------缓存相关------------------------------------句法: open_file_cache off;open_file_cache max=N [inactive=time];默认: open_file_cache off;语境: http,server,locatioopen_file_cache max=65535 inactive=20s;
NGINX缓存将最近使用的文件描述符和相关元数据(如修改时间,大小等)存储在缓存中。缓存不会存储所请求文件的内容
max=64 设置可以缓存的最大文件描述符数量,建议和打开文件数一致,当缓存溢出时,将删除最近最少使用(LRU)的元素
inactive参数定义了缓存项的非活动时长,超过此时长且命中次数未达到min_uses指定的值,缓存项将被视为非活动项并删除。
min_uses和inactive共同决定了缓存项的存活条件和缓存的有效性,二者在配置和使用上是有关联的句法: open_file_cache_min_uses number;默认: open_file_cache_min_uses 1;语境: http,server,location
min_uses参数定义了文件在inactive指定的时间内被访问的最小次数,若访问次数少于此值,文件将从缓存中删除句法: open_file_cache_valid time;默认: open_file_cache_valid 60s;语境: http,server,location
确认经过60s之后再去看看缓存的内容是否有效,如果源内容发生了更新,那么更新缓存。
如果你的静态文件内容变化频繁并且对时效性要求较高,一般应该把 open_file_cache_valid 设置的小一些,以便及时检测和更新。
如果变化相当不频繁的话,那就可以设置大一点,在变化后用 reload nginx 的方式来强制更新缓存句法: open_file_cache_errors on | off;默认: open_file_cache_errors off;语境: http,server,location
文件错误是否也同样缓存,默认是off的,如果启用,则在访问资源时,NGINX会报告相同的错误。
------------------------------------------------------------------------------------- client_header_timeout 15;
客户端向服务端发送一个完整的 request header 的超时时间。
如果客户端在指定时间内没有发送一个完整的 request header,Nginx 返回 HTTP 408(Request Timed Out)。client_header_buffer_size 4k;
此设置指定了客户端请求头部的缓冲区大小。4k是一个合理的默认值,但根据实际需求,可以适当调整。client_header_timeout 15;
此设置定义了客户端请求头读取的超时时间,单位为秒。15秒是一个适中的值,既不会太短导致正常的请求被误判,也不会太长导致资源浪费。client_body_buffer_size 8k;
设置读取客户端请求正文的缓冲区大小。如果请求正文大于缓冲区,则将整个正文或仅其部分写入临时文件。
默认情况下,缓冲区大小等于两个内存页(getconf PAGE_SIZE)。这在x86、其他32位平台和x86-64上8K。在其他64位平台上通常16K。client_max_body_size 10m;
客户端上传文件大小限制。 client_body_timeout 15;
指定客户端与服务端建立连接后发送 request body 的超时时间。
如果客户端在指定时间内没有发送任何内容,Nginx 返回 HTTP 408(Request Timed Out)。reset_timedout_connection on;
告诉nginx关闭不响应的客户端连接。这将会释放那个客户端所占有的内存空间。send_timeout 15;
服务端向客户端传输数据,在这个超时时间内,未收到客户端确认收到数据的消息,则断开连接server_tokens off;
并不会让nginx执行的速度更快,但它可以关闭在错误页面中的nginx版本数字,这样对于安全性是有好处的。
6. proxy调优
proxy buffering的作用主要是实现被代理服务器和客户端之间的请求异步处理,通过缓冲区暂存响应数据,再按需发送给客户端,有助于提升处理效率和并发能力
proxy_cache 作用是缓存后端服务器的内容,可能是任何内容,包括静态的和动态。 缓存减少了nginx与后端通信的次数,节省了传输时间和后端宽带
proxy_set_header Host $http_host; # 请求头带上的域名
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 客户端真实IP#此配置用于定义Nginx在何种情况下会将请求传递给下一个上游服务器
proxy_next_upstream error timeout http_500 http_502 http_503 http_504;#表示设置Nginx与后端服务器建立连接的超时时间为30秒
proxy_connect_timeout 30;
# nginx代理等待后端服务器的响应时间
proxy_send_timeout 60;
# 后端服务器数据回传给nginx代理超时时间
proxy_read_timeout 60; #缓冲区设置
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
proxy_busy_buffers_size 4k;
proxy_temp_path /tmp/nginx_proxy 1 2;
proxy_max_temp_file_size 20M;
proxy_temp_file_write_size 8k;#缓存设置
//在全局配置http部分中添加,定义一个proxy_cache
http {proxy_cache_path /data/nginx_cache/ levels=1:2 keys_zone=my_zone:10m inactive=300s max_size=50M;
}
//在虚拟主机server的location中
proxy_cache my_zone;
proxy_cache_valid 200 302 1h;
#缓冲区设置
proxy_buffering作用主要是实现被代理服务器和客户端的请求异步
proxy_buffering on;:启用代理缓冲功能。
proxy_buffer_size 4k; 设置读取响应头的缓冲区为4KB。
proxy_buffers 2 4k;:设置读取响应体的缓冲区为2个4KB。
proxy_busy_buffers_size 4k;:设置忙时缓冲区大小为4KB。
proxy_temp_path /tmp/nginx_proxy 1 2;:设置临时文件路径及权限。
proxy_max_temp_file_size 20M;:设置最大临时文件大小为20MB。
proxy_temp_file_write_size 8k;:设置写入临时文件的大小为8KB。
#缓存设置
proxy_cache作用是将从C上获取的数据根据预设的规则存放到B上留着备用, 当下次A再次请求相同数据的时候可以不用再到C上取,当然有一个时间限定。
proxy_cache:默认off,开启的话不是on,而是写一个存放缓存的区域名称,例如:proxy_cache my_zone;
proxy_cache_bypass:设置什么请求不读取cache,一定要从C中获取,这是从安全考虑。比如果proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment
proxy_no_cache:设定什么情况不缓存,作用和上面的类似。
proxy_cache_key: 保持默认就行,不设置。
proxy_cache_path:例如:proxy_cache_path /data/nginx_cache/ levels=1:2 keys_zone=my_zone:10m inactive=300s max_size=5g 依次是存放位置,层级目录,zone的名称和大小,失效时间,最大缓存数据proxy_cache_valid 200 302 1h :#表示将200和302应答缓存一小时,要和proxy_cache配合使用。
7. fastcgi 调优
FastCGI buffer通过将FastCGI应用程序的响应内容先缓冲在Nginx服务器上,再一次性发送给客户端,减少了Nginx与后端FastCGI服务器之间的交互次数,从而提高了整体的处理性能。
fastcgi_cache 缓存fastcgi生成的内容,很多情况是php生成的动态的内容。缓存减少了nginx与php的通信的次数,更减轻了php和数据库(mysql)的压力。
#指定fastcgi的ip和端口
fastcgi_pass 172.18.50.65:9000;
#fastcgi默认的主页资源
fastcgi_index index.php;
#/app/php为存放php代码的目录
fastcgi_param SCRIPT_FILENAME /app/php$fastcgi_script_name;
#加载fastcgi参数
include fastcgi_params;fastcgi_connect_timeout 600;
fastcgi_send_timeout 600;
fastcgi_read_timeout 600;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
fastcgi_temp_path /usr/local/nginx1.10/nginx_tmp;
fastcgi_intercept_errors on;
fastcgi_cache_path /usr/local/nginx1.10/fastcgi_cache levels=1:2 keys_zone=cache_fastcgi:128minactive=1d max_size=10g;
fastcgi_connect_timeout 600 :指定连接到后端FastCGI的超时时间。
fastcgi_send_timeout 600 :向FastCGI传送请求的超时时间。
fastcgi_read_timeout 600 :指定接收FastCGI应答的超时时间。
fastcgi_buffer_size 64k : 设置读取响应头的缓冲区为64KB。
fastcgi_buffers 4 64k : 设置读取响应体的缓冲区为4个64KB。
fastcgi_busy_buffers_size 128k :建议设置为fastcgi_buffers的两倍,繁忙时候的buffer。
fastcgi_temp_file_write_size 128k :在写入fastcgi_temp_path时将用多大的数据块,默认值是fastcgi_buffers的两倍,该数值设置小时若负载上来时可能报502BadGateway。
fastcgi_temp_path :缓存临时目录。
fastcgi_intercept_errors on :这个指令指定是否传递4xx和5xx错误信息到客户端,或者允许nginx使用error_page处理错误信息。注:静态文件不存在会返回404页面,但是php页面则返回空白页!fastcgi_cache_path /usr/local/nginx1.10/fastcgi_cache levels=1:2 keys_zone=cache_fastcgi:128m inactive=1d max_size=10g定义缓存文件的存储路径、缓存大小、缓存有效期、缓存键的哈希表大小等。/usr/local/nginx1.10/fastcgi_cache 缓存文件的存储路径。levels=1:2 缓存目录的层次结构,这里表示首先按第一个字符分目录,然后在这些目录中再按前两个字符分目录。keys_zone=cache_fastcgi:128m 为缓存区命名(这里是 cache_fastcgi)并设置其大小(这里是 128MB)。inactive=1d 缓存项在不被访问后多久被视为“非活动”的,之后它们可以被清理器线程删除 max_size=10g 表示最多用多少硬盘空间。fastcgi_cache cache_fastcgi:启用上面创建的名为cache_fastcgi缓存。可以有效降低CPU的负载,并且防止502的错误放生。fastcgi_cache_valid 200 302 1h :#用来指定应答代码的缓存时间,实例中的值表示将200和302应答缓存一小时,要和fastcgi_cache配合使用。
fastcgi_cache_valid 301 1d :将301应答缓存一天。
fastcgi_cache_valid any 1m :将其他应答缓存为1分钟。
fastcgi_cache_min_uses 1 :该指令用于设置经过多少次请求的相同URL将被缓存。
fastcgi_cache_key http://$host$request_uri :该指令用来设置web缓存的Key值,nginx根据Key值md5哈希存储.一般根据$host(域名)、$request_uri(请求的路径)等变量组合成proxy_cache_key 。
fastcgi_pass :指定FastCGI服务器监听端口与地址,可以是本机或者其它。
8. gzip 调优
将响应报⽂发送⾄客户端之前可以启⽤压缩功能,这能够有效地节 约带宽,并提⾼响应⾄客户端的速度。Gzip压缩可以配置 http,server和location模块下。Nginx开启Gzip压缩参数说明:
Nginx启用压缩功能需要你来ngx_http_gzip_module模块,apache使用的是mod_deflate。
一般我们需要压缩的内容有:文本,js,html,css,
对于图片,视频,flash什么的不压缩,同时也要注意,我们使用gzip的功能是需要消耗CPU的!
gzip on;
gzip_min_length 2k;
gzip_buffers 4 32k;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
gzip_vary on;
gzip_proxied any;
gzip on; 开启压缩功能
gzip_min_length 2k :设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取,默认值是0,不管页面多大都进行压缩,建议设置成大于1K,如果小与1K可能会越压越大。
gzip_buffers 4 32k :压缩缓冲区大小,表示申请4个单位为32K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果。
gzip_http_version 1.1 :压缩版本,用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可。
gzip_comp_level 6 :压缩比例,用来指定GZIP压缩比,1压缩比最小,处理速度最快,9压缩比最大,传输速度快,但是处理慢,也比较消耗CPU资源。
gzip_types text/css text/xml application/javascript :用来指定压缩的类型,‘text/html’类型总是会被压缩。默认值: gzip_types text/html (默认不对js/css文件进行压缩) 压缩类型,匹配MIME型进行压缩;不能用通配符 text/*;text/html默认已经压缩 (无论是否指定);设置哪压缩种文本文件可参考 conf/mime.types。
gzip_vary on :增加响应头"Vary: Accept-Encoding",客户端响应头看到Content-Encoding:gzip 说明开启了gzip压缩。
gzip_proxied any; 表示所有来自代理服务器的请求都将启用压缩,经过CDN回源的请求也压缩
9. expires 缓存调优
原理:当nginx设置了expires后,例如设置为:expires 10d; 那么,所在的location或if的内容,用户在10天内请求的时候,都只会访问浏览器中的缓存,而不会去请求nginx
缓存,主要针对于图片,css,js等元素更改机会比较少的情况下使用,特别是图片,占用带宽大,我们完全可以设置图片在浏览器本地缓存365d,css,js,html可以缓存个10来天,这样用户第一次打开加载慢一点,第二次,就非常快了!缓存的时候,我们需要将需要缓存的拓展名列出来, Expires缓存配置在server字段里面。
location ~* \.(ico|jpe?g|gif|png|bmp|swf|flv)$ {expires 30d; #log_not_found off; access_log off;
}
location ~* \.(js|css)$ {expires 7d; log_not_found off; access_log off;
}
注:log_not_found off;是否在error_log中记录不存在的错误。默认是。
总结:
expire功能优点:
expires可以降低网站购买的带宽,节约成本;同时提升用户访问体验;
减轻服务的压力,节约服务器成本,是web服务非常重要的功能。expire功能缺点:
被缓存的页面或数据更新了,用户看到的可能还是旧的内容,反而影响用户体验。
解决办法:第一个缩短缓存时间,例如:1天,但不彻底,除非更新频率大于1天;第二个对缓存的对象改名。
expires 24h; 24小时过期
expires modified +24h; 文件修改后24小时过期
expires @24h; “@”前缀指定一天中的时间,@24表示今天的24点过期
expires 0; 设置为0意味着Cookie立即过期,浏览器将删除它
expires -1; 等同Cache-Control: no-cache,不缓存
expires epoch; 等同Cache-Control: no-cache,不缓存
expires $expires;
add_header Cache-Control private; 设置缓存头为private
add_header Cache-Control no-cache; 不缓存
10. 防盗链
防止别人直接从你网站引用图片等链接,消耗了你的资源和网络流量,那么我们的解决办法由几种:
- 水印,品牌宣传,你的带宽,服务器足够;
- 防火墙,直接控制,前提是你知道IP来源;
- 防盗链策略下面的方法是直接给予404的错误提示。
location ~*^.+\.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ { valid_referers server_names *.example.com example.* www.example.org ~\.google\;if($invalid_referer) { return 404; break; } #对于某些不需要记录访问日志的请求,可以单独配置关闭访问日志access_log off;
}
Syntax: valid_referers none | blocked | server_names | string ...;
Default: —
Context: server, locationvalid_referers 指令可以配置什么为合法的referers
none :$http_referer变量的值是空的, 是直接访问url,没有使用任何网站或链接的跳转
blocked :请求标头中存在“ Referer”字段,但其值已被防火墙或代理服务器删除;这些值是不以“ http://”或“ https://”开头的字符串;
server_names :配置域名列表,为一个或多个域名,支配通配符、正则表达式写法
11. 内核参数优化
vim /etc/sysctl.conf ,执行sysctl -p使内核修改生效
fs.file-max = 999999
fs.nr_open = 65535kernel.sysrq = 0
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296 net.core.wmem_default = 8388608
net.core.wmem_max = 16777216
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 40960 net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 10240 87380 12582912
net.ipv4.tcp_wmem = 10240 87380 12582912
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.ip_local_port_range = 1024 65000
fs.file-max = 999999
这个参数设置了系统级别上所有进程能够打开的文件句柄的最大数量。
将其设置为999999意味着系统允许打开的文件句柄总数可以达到近一百万,这有助于提升系统处理大量并发文件操作的能力。kernel.sysrq = 0
此参数用于控制SysRq键的功能。设置为0表示禁用SysRq键,这意味着无法通过按下SysRq键组合来执行紧急系统命令。kernel.core_uses_pid = 1
当这个参数设置为1时,核心转储文件(core dump file)的名称会包含产生该文件的进程的PID(进程标识符)。
这有助于在发生错误时更容易地识别是哪个进程产生了核心转储文件。kernel.msgmnb = 65536
这个参数定义了单个消息队列的最大字节数。消息队列是进程间通信的一种方式,此设置限制了队列中可以存储的消息总大小。kernel.msgmax = 65536
此参数设置了消息队列中单个消息的最大大小。与kernel.msgmnb一起,它们共同控制了消息队列的容量和消息的大小。kernel.shmmax = 68719476736
这个参数定义了共享内存段的最大大小。共享内存是进程间通信的另一种方式,允许多个进程访问同一块内存区域。此设置限制了单个共享内存段的大小。kernel.shmall = 4294967296
此参数设置了系统范围内所有共享内存段的总页数。它与kernel.shmmax一起,控制了共享内存的总量和单个段的大小。以下是一组针对网络性能优化的内核参数设置:
net.core.wmem_default = 8388608 :默认发送缓冲区大小 设置为8388608字节,影响套接字发送缓冲区的默认大小。
net.core.wmem_max = 16777216:最大发送缓冲区大小 设置为16777216字节,控制套接字发送缓冲区的最大大小。
net.core.rmem_default = 8388608 :默认接收缓冲区大小设置为8388608字节,影响套接字接收缓冲区的默认大小。
net.core.rmem_max = 16777216 :最大接收缓冲区大小设置为16777216字节,控制套接字接收缓冲区的最大大小。
net.core.netdev_max_backlog = 262144 :网络设备接收队列的最大长度设置为262144,影响网络设备接收队列能够存储的最大数据包数量。
net.core.somaxconn = 40960 :套接字监听队列的最大长度设置为40960,控制套接字监听队列的最大连接数net.ipv4.ip_forward = 0:表示Linux系统当前禁止IP转发。这可能会影响Docker容器与外部通信,因为Docker容器通常依赖宿主机进行IP转发实现网络通信。要解决这个问题,需要将此值设置为1,即开启IP转发12。
net.ipv4.conf.default.rp_filter = 1:表示开启严格的反向路径校验,确保数据包的最佳路径。
net.ipv4.conf.default.accept_source_route = 0:表示关闭源地址路由功能,增强系统安全性。
net.ipv4.tcp_syncookies = 1:此参数与TCP同步标签(syncookies)有关,用于防止SYN flood攻击,增强TCP连接的稳定性。
net.ipv4.tcp_max_tw_buckets = 6000:控制TIME_WAIT状态的最大数量,有助于管理TCP连接的生命周期。
net.ipv4.tcp_sack = 1:启用SACK(Selective Acknowledgments)功能,提高TCP连接的效率和可靠性。
net.ipv4.tcp_window_scaling = 1:启用TCP窗口缩放功能,有助于在高速网络环境下提高TCP连接的性能。
net.ipv4.tcp_rmem:表示TCP接收buffer的配置,有三个值,分别为TCP接收buffer的最少字节数、默认值、最大字节数。
net.ipv4.tcp_wmem:表示TCP发送buffer的配置,同样有三个值,分别为TCP发送buffer的最少字节数、默认值、最大字节数。
net.ipv4.tcp_max_orphans:表示系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤儿连接将即刻被复位并打印出警告信息。
net.ipv4.tcp_max_syn_backlog:表示对于那些依然还未获得客户端确认的连接请求,需要保持的最大队列长度。
net.ipv4.tcp_timestamps:用于控制TCP时间戳的使用,设置为0表示禁用时间戳。
net.ipv4.tcp_synack_retries:表示在内核放弃建立连接之前发送SYN+ACK包的数量。
net.ipv4.tcp_syn_retries:表示在内核放弃建立连接之前发送SYN包的数量。
net.ipv4.tcp_tw_recycle:设置为1表示开启TCP连接中TIME-WAIT sockets的快速回收,有助于减少TIME_WAIT状态的数量,但需要注意,在某些情况下可能会导致连接问题,如在NAT环境下
net.ipv4.tcp_tw_reuse:设置为1表示允许将TIME-WAIT sockets重新用于新的TCP连接,这有助于提升TCP连接的效率
net.ipv4.tcp_mem:这是一个系统全局参数,表示所有TCP的buffer配置,有三个值,分别为TCP buffer值的下限、内存压力模式开始对buffer进行压力的上限、以及内存使用的上限
net.ipv4.tcp_fin_timeout:设置为1表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间
net.ipv4.tcp_keepalive_time:设置为30表示当keepalive启用时,TCP发送keepalive消息的频度,缺省值为2小时
net.ipv4.ip_local_port_range:设置为1024 65000表示用于向外连接的端口范围,缺省情况下范围较小,改为1024到65000可以扩大可用端口范围
相关文章:

Nginx调优,有这篇就够了
目录 1. 工作进程数量 2. Nginx最大打开文件数 3. Nginx事件处理模型 4. 开启高效传输模式 5. 连接超时时间 6. proxy调优 7. fastcgi 调优 8. gzip 调优 9. expires 缓存调优 10. 防盗链 11. 内核参数优化 1. 工作进程数量 #根据cpu个数自动调整工作进程数量 work…...

Java语言程序设计基础篇_编程练习题*18.17 (数组中某个指定字符出现的次数)
题目:*18.17 (数组中某个指定字符出现的次数) 编写一个递归的方法,求出数组中一个指定字符出现的次数。需要定义下面两个方法,第二个方法是一个递归的辅助方法。 public static int count(char[] chars, char ch) public static int count(…...

实时(按帧)处理的低通滤波C语言实现
写在前面: 低通滤波采用一般的FIR滤波器,因为本次任务,允许的延迟较多,或者说前面损失的信号可以较多,因此,涉及一个很高阶的FIR滤波器,信号起始段的信号点可以不处理,以及…...

Centos7.9部署Gitlab-ce-16.9
一、环境信息 软件/系统名称版本下载地址备注Centos77.9.2009https://mirrors.nju.edu.cn/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.isogitlab-cegitlab-ce-16.9.1https://mirror.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-16.9.1-ce.0.el7.x86_64.rpm…...

卷积神经网络(一)
目录 一.卷积神经网络的组成 二.卷积层 目的: 参数: 计算公式 卷积运算过程 三.padding-零填充 1.Valid and Same卷积 2.奇数维度的过滤器 四.stride步长 五.多通道卷积 1.多卷积核(多个Filter) 六.卷积总结 七.池化层(Pooling) 八.全连接层…...

加密与安全_ sm-crypto 国密算法sm2、sm3和sm4的Java库
文章目录 Presm-crypto如何使用如何引入依赖 sm2获取密钥对加密解密签名验签获取椭圆曲线点 sm3sm4加密解密 Pre 加密与安全_三种方式实现基于国密非对称加密算法的加解密和签名验签 sm-crypto https://github.com/antherd/sm-crypto 国密算法sm2、sm3和sm4的java版。基于js…...

VR 尺寸美学主观评价-解决方案-现场体验研讨会报名
棣拓科技VR创新解决方案助力尺寸美学所见即所得! 诚邀各位行业专家莅临指导交流 请扫描海报二维码踊跃报名,谢谢 中国上海 2024.10.25 亮点介绍 1、通过精湛渲染技术,最真实展现设计效果,并通过VR设备一比一比例进行展现。 2、设置相关设…...

网络基础入门指南(三)
一、远程管理交换机 1.配置IP地址 远程管理需要通过IP地址访问网络设备交换机的接口,默认无法配置IP地址需要使用虚接口vlan1 2.配置远程登录密码 远程管理需要配置VTY接口VTY是虚拟终端,是一种网络设备远程连接的方式vty 0 4表示可同时打开5个会话 3…...

大众萨克森:SNP助力汽车制造智能化,实现SAP S/4HANA系统成功升级
关于大众萨克森 VW Sachsen 大众汽车(Volkswagen Sachsen GmbH)包括位于德国茨维考的汽车工厂、位于德累斯顿的透明工厂和位于开姆尼茨的发动机工厂。茨维考汽车厂拥有 7,900名员工,每天生产1,350辆高尔夫和帕萨特汽车。在开姆尼茨的发动机工…...

20240912 每日AI必读资讯
OpenAI计划在接下来的两周内发布Strawberry - 独立产品:尽管草莓是ChatGPT的一部分,但它将作为一个独立的产品发布,具体如何提供尚不清楚。它可能会出现在用户选择的AI模型下拉菜单中,与现有服务有所不同。 - 推理功能ÿ…...

Linux之Shell命令
Shell 是一个 C 语言编写的脚本语言,它是用户与 Linux 的桥梁,用户输入命令交给 Shell 处理,Shell 将相应的操作传递给内核(Kernel),内核把处理的结果输出给用户。 程序执行方式:编译、解释 Sh…...

前端Vue框架实现html页面输出pdf(html2canvas,jspdf)
代码demo: <template><el-dialog class"storageExportDialog" :fullscreen"true" title"" :visible.sync"visible" v-if"visible" width"600px"><div id"exportContainer" …...

SAP Fiori UI5-环境搭建-2022-2024界面对比
文章目录 一、Fiori项目初始化实际操作第一步:新建文件夹(项目文件)第二步:打开我们项目第三步:打开终端 部署环境第四步: XML中新增文本 二、 2023年Vscode中Fiori界面三 、2024年Vscode中Fiori界面 一、Fiori项目初始…...

二百六十三、Java——IDEA项目打成jar包,然后在Linux中运行
一、目的 在用Java对原Kafka的JSON字段解析成一条条数据,然后写入另一个Kafka中,代码写完后打成jar包,放在Linux中,直接用海豚调度运行 二、Java利用fastjson解析复杂嵌套json字符串 这一块主要是参考了这个文档,然…...

【OpenCV2.2】图像的算术与位运算(图像的加法运算、图像的减法运算、图像的融合)、OpenCV的位运算(非操作、与运算、或和异或)
1 图像的算术运算 1.1 图像的加法运算 1.2 图像的减法运算 1.3 图像的融合 2 OpenCV的位运算 2.1 非操作 2.2 与运算 2.3 或和异或 1 图像的算术运算 1.1 图像的加法运算 add opencv使用add来执行图像的加法运算 图片就是矩阵, 图片的加法运算就是矩阵的加法运算, 这就要求加…...

ChatGPT 3.5/4.0使用手册:解锁人工智能的无限潜能
1. 引言 在人工智能的浪潮中,ChatGPT以其卓越的语言理解和生成能力,成为了一个革命性的工具。它不仅仅是一个聊天机器人,更是一个能够协助我们日常工作、学习和创造的智能伙伴。随着ChatGPT 3.5和4.0版本的推出,其功能和应用范围…...

E32.【C语言 】练习:蓝桥杯题 懒羊羊字符串
1.题目 【问题描述】 “懒羊羊”字符串是一种特定类型的字符串,它由三个字符组成,具有以下特点: 1.字符串长度为 3. 2.包含两种不同的字母。 3.第二个字符和第三个字符相同 换句话说,“懒羊羊”字符串的形式应为 ABB,其中A和B是不…...

Linux 网络基础概念
文章目录 一、初始协议1、理解2、协议分层3、软件分层4、OSI七层模型5、TCP/IP五层模型 二、再识协议1、为什么要有TCP/IP协议2、什么是TCP/IP协议3、TCP/IP协议与操作系统的关系(宏观上,怎么实现的) 三、网络传输基本流程1、mac地址2、TCP/I…...

【题目】MySQL选择题
来源:MySQL专项练习选择题 1.有一个User用户表,要删除整张表(指完全删除表数据和结构),下面正确的MySQL语句是: A.DELETE TABLE User; B.DROP TABLE User; C.TRUNCATE TABLE User; D.DELETE FROM User …...

自然语言处理系列六十三》神经网络算法》LSTM长短期记忆神经网络算法
注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列六十三神经网络算法》LSTM长短期记忆神经网络算…...

亚马逊IP关联及其解决方案
在电子商务领域,亚马逊作为全球领先的在线购物平台,吸引了众多商家和个人的参与。然而,随着业务规模的扩大,商家在使用亚马逊服务时可能会遇到IP关联的问题,这不仅影响账户的正常运营,还可能带来一系列不利…...

Definition and Detection of Defects in NFT Smart Contracts论文解读、复现
背景知识\定义 NFT 是数字或物理资产所有权的区块链表示。不仅限于数字图片,视频和画作等艺术品也可以转化为 NFT 进行交易。近年来受到广泛关注,2021 年 NFT 交易额达到约 410 亿美元。 智能合约 是在区块链上运行的图灵完备程序。支持各种去中心化…...

Neo4j图数据库
文章目录 一、Neo4J相关介绍1.为什么需要图数据库方案1:Google方案2:Facebook 2.特定和优势3.什么是Neo4j4.Neo4j数据模型图论基础属性图模型Neo4j的构建元素 5.软件安装 二、CQL语句1.CQL简介2.CREATE 命令3.MATCH 命令4.RETURN 子句5.MATCH和RETURN6.C…...

k8s API资源对象
API资源对象Deployment 最小的资源是pod,deployment是多个pod的集合(多个副本实现高可用、负载均衡等)。 使用yaml文件来配置、部署资源对象。 Deployment YAML示例: vi ng-deploy.yaml apiVersion: apps/v1 kind: Deployment…...

GB/T28181规范解读之编码规则详解
GB/T28181,即《安全防范视频监控联网系统信息传输、交换、控制技术要求》,是我国安防行业的重要标准之一。该标准详细规定了城市监控报警联网系统中信息传输、交换、控制的互联结构、通信协议结构,以及传输、交换、控制的基本要求和安全性要求…...

Vue封装的过度与动画(transition-group、animate.css)
目录 1. Vue封装的过度与动画1.1 动画效果11.2 动态效果21.3 使用第三方动画库animate.css 1. Vue封装的过度与动画 作用:在插入、更新或移除DOM元素时,在合适的时候给元素添加样式类名 1.1 动画效果1 Test1.vue: transition内部只能包含一个子标签。…...

免费云服务器申请教程
免费云服务器的申请流程通常包括以下几个步骤,但请注意,不同云服务提供商的具体步骤可能略有不同。以下是一个通用的申请流程: 一、选择合适的云服务提供商 首先,需要选择一家提供免费云服务器服务的云服务提供商。 免费云服务器汇…...

Spring Cloud Gateway中的常见配置
问题 最近用到了Spring Cloud Gateway,这里记录一下这个服务的常见配置。 spring:data:redis:host: ${REDIS_HOST:xxx.xxx.xxx.xxx}port: ${REDIS_PORT:2345wsd}password: ${REDIS_PASS:sdfsdfgh}database: ${REDIS_DB:8}session:redis:flush-mode: on_savenamespa…...

SelectDB 多计算集群核心设计要点揭秘与场景应用
需求起源 SelectDB 设计多计算集群架构初衷主要源于两类典型的使用场景: 写入与读取隔离:传统数仓架构中,数据的写入和读取在同一个计算集群,当遇到业务写入高峰期或突增的写入压力时,容易因资源相互抢占影响查询服务…...

Docker 清理和查看镜像与容器占用情况
查看容器占用磁盘大小 docker system df 查看单个image、container大小: docker system df -v 清理所有废弃镜像与Build Cache docker system prune -a...