如何解决NGINX与OpenResty缓存性能
我配置了一个简单的Nginx代理,并进行了一些简单的缓存,在OpenResty和普通的Nginx中,它的性能表现异常。
在负载测试(300rpm)下,香草Nginx可以正常工作,但是当我从Nginx切换到OpenResty时,我收到了一部分请求,这些请求突然挂起,没有响应,需要20秒钟以上的时间才能返回
。我的Nginx.conf如下所示:
events {
worker_connections 1024;
}
http {
proxy_cache_path /var/cache keys_zone=pagecache:10m;
server {
listen 80;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
ssl_certificate /etc/ssl/mycert.pem;
ssl_certificate_key /etc/ssl/mycert.key;
location / {
proxy_cache pagecache;
proxy_cache_key $host$request_uri;
proxy_cache_lock on;
proxy_pass http://ssl-proxy-test.s3-website-eu-west-1.amazonaws.com/;
add_header X-Cache-Status $upstream_cache_status;
}
}
}
我的Nginx Dockerfile如下:
FROM Nginx
copY certificates /etc/ssl
copY Nginx.conf /etc/Nginx/Nginx.conf
对于OpenResty,它看起来像这样:
FROM openresty/openresty:buster
copY certificates /etc/ssl
copY Nginx.conf /usr/local/openresty/Nginx/conf/Nginx.conf
我已经在多个OpenResty版本(克星,仿生,氙气)上进行了尝试,并在每个版本上获得了相同的结果。
但是,缓慢的请求确实会返回304,并带有Cache-Status:HIT标头,并且似乎无法传递到上游服务器,这使我认为瓶颈必须在从内存/磁盘读取缓存的数据时出现?而不是来自上游。
我是OpenResty的新手,所以不确定在缓存性能方面与普通Nginx有什么不同。
关于从哪里开始调试的任何建议?还是可能是什么原因?
解决方法
在一些不同的基础架构上进行负载测试后,我发现此问题似乎仅在AWS Elastic Container Service上出现。
切换到基于Centos / Amazon Linux的Docker映像似乎可以使工作更加一致。
仍然不确定真正的原因,但至少有一些有用的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。