windows下nginx的安装及使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 打开cmd命令窗口,切换到nginx解压目录下
# start nginx
./nginx.exe
start nginx.exe

# 检查80端口是否被占用的命令是:
netstat -ano | findstr 0.0.0.0:80
netstat -ano | findstr "80"

./nginx.exe -s reload
# 快速停止nginx
./nginx.exe -s stop
taskkill /f /t /im nginx.exe
# 完整有序的停止nginx
./nginx.exe -s quit

阅读更多

reactive webclient

1
2
3
4
5
6
7
8
WebClient.create().get()
.uri("https://example.org/path")
.httpRequest(httpRequest -> {
HttpClientRequest reactorRequest = httpRequest.getNativeRequest();
reactorRequest.responseTimeout(Duration.ofSeconds(2));
})
.retrieve()
.bodyToMono(String.class);
阅读更多

nginx错误分析 Connection reset by peer

nginx上下游针对请求处理的超时时间配置不合理,导致报connection reset by peer问题,即低频502,如图:
img.png

此类问题主要原因为,客户端在对上游长连接fd读写时,正好此fd被上游服务器关闭了,此时会报connection reset by peer,所以需要尽量避免上游服务器主动断开连接;

阅读更多

nginx keepalive

keepalive是在TCP中一个可以检测死连接的机制,可以保持tcp长连接不被断开,属于tcp层功能。http1.1协议默认开启keepa-live保持长连接,主要作用是提高对tcp连接的复用率,减少创建连接过程给系统带来的性能损耗。

阅读更多

apache.http.impl.client.HttpClients

1
2
3
4
5
6
7
8
try (CloseableHttpClient httpClient = HttpClients.custom().disableAutomaticRetries().build()) {
HttpPost httpPost = new HttpPost("http://www.baidu.com");

try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
int statusCode = response.getStatusLine().getStatusCode();
}
}

阅读更多

Jdk8 DNS解析

Java提供InetAddress类,可以对域名-IP进行正向、逆向解析。

InetAddress解析的时候一般是调用系统自带的DNS程序。

linux 默认的DNS方式是读取/etc/resolv.conf进行DNS解析。

mac 默认的方式是向网关请求获取DNS服务器,然后直接请求DNS服务器进行解析,没有读取/etc/resolv.conf。

DNSNameService 根据sun.net.spi.nameservice.nameservers指定的name server或/etc/resolv.conf文件中配置的name server进行DNS解析

阅读更多