导航:首页 > IDC知识 > nginxtcp服务器

nginxtcp服务器

发布时间:2021-01-18 11:02:09

1、nginx支持TCP代理有什么作用

通过这个模块,代抄理后端其它袭协议应用,如mysql, nosql之类的
比如用Node.JS写了一些TCP服务,那么Nginx就可以给这些Node.JS做TCP代理,比如开启多个Node.JS监听不同的端口,经过Nginx TCP代理到upstream实现负载均衡,Nginx比Haproxy的优势还在于Nginx能够提供HTTP/HTTPS服务,可以处理静态资源,或者把一些其他请求交给其他语言来处理,比如可以把一些输出HTML页面的请求fastcgi_pass给PHP-FPM处理,总而言之,Nginx更像是在做一个可扩展的Web开发系统.另外,Nginx已经支持WebSocket反向代理,而移动浏览器对HTTP上的全双工通信WebSocket的支持还是不错的,只是还没有足够成熟.

2、nginx 服务器怎么修改端口

linuxNginx达并发数高TCP TIME_WAIT套接字数量经达两、三万服务器容易拖死事实我简单通修改Linux内核参数减少Nginx服务器TIME_WAIT套接字数量进提高Nginx服务器并发性能

vi /etc/sysctl.conf

增加几行:
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000简单说明:
net.ipv4.tcp_syncookies = 1 表示启SYN Cookies现SYN等待队列溢启用cookies处理防范少量SYN攻击默认0表示关闭;
net.ipv4.tcp_tw_reuse = 1 表示启重用允许TIME-WAIT sockets重新用于新TCP连接默认0表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示启TCP连接TIME-WAIT sockets快速收默认0表示关闭
net.ipv4.tcp_fin_timeout = 30 表示套接字由本端要求关闭参数决定保持FIN-WAIT-2状态间
net.ipv4.tcp_keepalive_time = 1200 表示keepalive起用候TCP发送keepalive消息频度缺省2改20钟
net.ipv4.ip_local_port_range = 1024 65000 表示用于向外连接端口范围缺省情况:3276861000改102465000
net.ipv4.tcp_max_syn_backlog = 8192 表示SYN队列度默认1024加队列度8192容纳更等待连接网络连接数
net.ipv4.tcp_max_tw_buckets = 5000 表示系统同保持TIME_WAIT套接字数量超数字TIME_WAIT套接字立刻清除并打印警告信息默认180000改 5000于Apache、Nginx等服务器几行参数减少TIME_WAIT套接字数量于Squid效却项参 数控制TIME_WAIT套接字数量避免Squid服务器量TIME_WAIT套接字拖死

echo ====================== 执行命令使配置效:=========================
#更改linux内核参数立即效命令

/sbin/sysctl -p

Nginx优化

使用FastCGI 缓存
fastcgi_cache TEST
启FastCGI 缓存并且其制定名称觉启缓存非用效降低CPU 负载并且防止502 错误

fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2
keys_zone=TEST:10m
inactive=5m;
指令FastCGI 缓存指定路径目录结构等级关键字区域存储间非删除间

其说明

Nginx 由 Igor Sysoev 俄罗斯访问量第二 Rambler.ru 站点发已经该站点运行超两半Igor 源代码类BSD许证形式发布

高并发连接情况NginxApache服务器错替代品Nginx同作7层负载均衡服务器使用根据我测试结 Nginx 0.6.31 + PHP 5.2.6 (FastCGI) 承受3万并发连接数相于同等环境Apache10倍

根据我经验4GB内存服务器+Apache(prefork模式)般能处理3000并发连接占用3GB内存 系统预留1GB内存我曾经两台Apache服务器配置文件设置MaxClients4000Apache并发连接数达 3800导致服务器内存Swap空间用满崩溃

台 Nginx 0.6.31 + PHP 5.2.6 (FastCGI) 服务器3万并发连接启10Nginx进程消耗150M内存(15M*10=150M)启64php-cgi进程消耗1280M内存 (20M*64=1280M)加系统自身消耗内存总共消耗2GB内存服务器内存较完全启25php-cgi进程 php-cgi消耗总内存数才500M

3、nginx最大连接数如何优化,nginx的tcp

我现在在复windows xp下配置nginx 但是最大并发制连接数 只能配到最高64. 我想提高最大并发连接数。查阅资料得到结果是 由于windows的文件描述符的配置过低造成最大并发数无法提高。 然后我就去修改 windows/system32/config.nt中的files=40 =》file

4、把nginx改为一个普通的tcp服务器,应用层协议自己定义,有可行性吗

有可行性,但不高。
nginx代码不少,且近乎没有文档,连开发个nginx插件都麻烦的要死。只有专少量API文档,但没有解属释核心概念和流程。
且nginx是基于回调模型的。如果只是自己写个定制协议的服务器,大不了直接在socket上加epoll就是了。没必要再去招惹nginx。nginx并不会在这个过程里带给你什么功能上的优势,反倒要花大量时间去学nginx的内部实现。这是得不偿失的。

5、nginx怎么代理tcp的应用

1. 安装

1
2
3
4
5
6

# wget http://nginx.org/download/nginx-1.4.4.tar.gz
# tar zxvf nginx-1.4.4.tar.gz
# cd nginx-1.4.4
# ./configure --add-mole=/path/to/nginx_tcp_proxy_mole
# make
# make install

2. 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

http {
listen 80;
location /status {
check_status;
}
}
tcp {
upstream cluster_www_ttlsa_com {
# simple round-robin
server 127.0.0.1:1234;
check interval=3000 rise=2 fall=5 timeout=1000;
#check interval=3000 rise=2 fall=5 timeout=1000 type=ssl_hello;
#check interval=3000 rise=2 fall=5 timeout=1000 type=http;
#check_http_send "GET / HTTP/1.0\r\n\r\n";
#check_http_expect_alive http_2xx http_3xx;
}
server {
listen 8888;
proxy_pass cluster_www_ttlsa_com;
}
}

这会出现一个问题,就是tcp连接会掉线。原因在于当服务端关闭连接的时候,客户端不可能立刻发觉连接已经被关闭,需要等到当Nginx在执行check规则时认为服务端链接关闭,此时nginx会关闭与客户端的连接。
3. 保持连接配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

http {
listen 80;
location /status {
check_status;
}
}
tcp {
timeout 1d;
proxy_read_timeout 10d;
proxy_send_timeout 10d;
proxy_connect_timeout 30;
upstream cluster_www_ttlsa_com {
# simple round-robin
server 127.0.0.1:1234;
check interval=3000 rise=2 fall=5 timeout=1000;
#check interval=3000 rise=2 fall=5 timeout=1000 type=ssl_hello;
#check interval=3000 rise=2 fall=5 timeout=1000 type=http;
#check_http_send "GET / HTTP/1.0\r\n\r\n";
#check_http_expect_alive http_2xx http_3xx;
}
server {
listen 8888;
proxy_pass cluster_www_ttlsa_com;
so_keepalive on;
tcp_nodelay on;
}
}

6、nginx支持TCP代理有什么作用

比如Java和PHP。这类服务器(如JBoss和PHP-FPM)的IO处理能力往往不高。
Nginx有个好处是它会把Request在读取完专整之前buffer住,这属样交给后端的就是一个完整的HTTP请求,从而提高后端的效率,而不是断断续续的传递(互联网上连接速度一般比较慢)。
同样,Nginx也可以把response给buffer住,同样也是减轻后端的压力。

7、把nginx改为一个普通的tcp服务器,应用层协议自己定义,有可行性吗

通模块代理端其协议应用mysql, nosql类
比用Node.JS写些TCP服务,Nginx给些Node.JS做TCP代理,比启Node.JS监听同内端口,经Nginx TCP代理upstream实现负载均容衡

8、nginx tcp负载均衡,一台后端服务当掉,另一个能自动接管如何实现

fall=5 改成 fall=1
interval=1000 改成 interval=10000

再试

9、怎样在nginx 中获取每一个socket的tcpinfo

Nginx 结合FastCGI 程序可以搭建高性能web service程序。(a)Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。FastCGI接口在Linux下是socket(这个socket可以是文件socket,也可以是ip socket)。为了调用CGI程序,还需要一个FastCGI的wrapper(wrapper可以理解为用于启动另一个程序的程序),这个wrapper绑定在某个固定socket上,如端口或者文件socket。(b)当Nginx将CGI请求发送给这个socket的时候,通过FastCGI接口,wrapper接收到请求,然后派生出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着,wrapper再将返回的数据通过FastCGI接口,沿着固定的socket传递给Nginx;最后,Nginx将返回的数据发送给客户端。这就是Nginx+FastCGI的整个运作过程,如图1所示。FastCGI接口方式在脚本解析服务器(CGI应用程序服务器)上启动一个或者多个守护进程对动态脚本进行解析,这些进程就是FastCGI进程管理器,或者称为FastCGI引擎。 spawn-fcgi与PHP-FPM都是FastCGI进程管理器(支持PHP和C/C++)。

10、通过nginx怎么查服务器的tcp 新建连接数

|使用命令: netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"t",state[key]}'
返回结果中 LAST_ACK N 即为正在等待处理内的请容求数

与nginxtcp服务器相关的知识