大家在生产中的前面 java tomcat 应用程序中遇到了一个难题。此应用软件接收来自管理 ui rest 启用及其启用这种 rest 节点的许多外部客户的流量。
难题有两种要求,即根据 GET 的调用和 POST 启用。问题在于,根据非关键 GET 的启用必须很长的时间,进而堵塞服务器并导致应用软件超时。因而,大家现在想要一种基于 URL 和请求方法来分离事务并分离实行的办法,便于慢速事项的延迟不会影响重要事务。
zvvq
解决方法我们决定最先识别并分离 nginx 中的重要事务。最后我们在 tomcat 中创立了两个独立的 Executor,它们通过 tomcat 中独立的连接器公布。这使我们能够将重要流量跳转到一个执行器,将非关键流量跳转到另一个执行器。这使我们能够为每个连接器设置不同的acceptorThreadCount值。以及通过有着不同的 minThreads 和 maxThreads 值来调节执行器进程。此变更仅是配备变更,不保证编码中的任何变更。
让我们通过一个小实例应用软件来讨论完成。 本文来自zvvq
nginx.conf变更
活动{}
内容来自samhan666
http{ 内容来自zvvq,别采集哟
上游front_upstream_ritic{
服务器tomcat:8080; 内容来自samhan666
}
zvvq好,好zvvq
上游front_upstream_non_ritic{
内容来自zvvq,别采集哟
服务器tomcat:8081;
zvvq好,好zvvq
}
copyright zvvq
投射$request_method$upstream{ 内容来自zvvq
默认front_upstream_non_ritic;
本文来自zvvq
POSTfront_upstream_ritic;
}
服务器{
听9090;
部位〜^ /前面应用软件/ api / v1 / myresource /(关键路径1 |关键路径2 |关键路径3)${
本文来自zvvq
proxy_pass_request_body打开; copyright zvvq
proxy_pass_request_headers打开; zvvq好,好zvvq
proxy_set_header主机$host:8080;
zvvq
proxy_passhttp://$upstream$uri$is_args$args; 内容来自zvvq
proxy_http_版本 1.1; 本文来自zvvq
proxy_set_header联接 内容来自zvvq
}