Updated nginx config to support production load

This commit is contained in:
jainish shah
2018-08-08 11:30:35 -07:00
parent aac323db9f
commit c9a5f0c81e
5 changed files with 130 additions and 20 deletions

View File

@@ -65,6 +65,24 @@ cat <<EOF >/etc/nginx/nginx.conf
http { http {
include mime.types; include mime.types;
variables_hash_max_size 1024;
variables_hash_bucket_size 64;
server_names_hash_max_size 4096;
server_names_hash_bucket_size 128;
types_hash_max_size 2048;
types_hash_bucket_size 64;
proxy_read_timeout 2400s;
client_header_timeout 2400s;
client_body_timeout 2400s;
proxy_connect_timeout 75s;
proxy_send_timeout 2400s;
proxy_buffer_size 32k;
proxy_buffers 40 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 250m;
proxy_http_version 1.1;
client_body_buffer_size 128k;
include /etc/nginx/conf.d/*.conf; include /etc/nginx/conf.d/*.conf;
default_type application/octet-stream; default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' log_format main '$remote_addr - $remote_user [$time_local] "$request" '
@@ -100,7 +118,7 @@ server {
chunked_transfer_encoding on; chunked_transfer_encoding on;
client_max_body_size 0; client_max_body_size 0;
location /artifactory/ { location /artifactory/ {
proxy_read_timeout 900; proxy_read_timeout 2400;
proxy_pass_header Server; proxy_pass_header Server;
proxy_cookie_path ~*^/.* /; proxy_cookie_path ~*^/.* /;
proxy_pass http://127.0.0.1:8081/artifactory/; proxy_pass http://127.0.0.1:8081/artifactory/;

View File

@@ -626,6 +626,24 @@
"}\n", "}\n",
"http {\n", "http {\n",
" include mime.types;\n", " include mime.types;\n",
" variables_hash_max_size 1024;\n",
" variables_hash_bucket_size 64;\n",
" server_names_hash_max_size 4096;\n",
" server_names_hash_bucket_size 128;\n",
" types_hash_max_size 2048;\n",
" types_hash_bucket_size 64;\n",
" proxy_read_timeout 2400s;\n",
" client_header_timeout 2400s;\n",
" client_body_timeout 2400s;\n",
" proxy_connect_timeout 75s;\n",
" proxy_send_timeout 2400s;\n",
" proxy_buffer_size 32k;\n",
" proxy_buffers 40 32k;\n",
" proxy_busy_buffers_size 64k;\n",
" proxy_temp_file_write_size 250m;\n",
" proxy_http_version 1.1;\n",
" client_body_buffer_size 128k;\n",
" include /etc/nginx/conf.d/*.conf;\n", " include /etc/nginx/conf.d/*.conf;\n",
" default_type application/octet-stream;\n", " default_type application/octet-stream;\n",
" log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n", " log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n",
@@ -748,15 +766,26 @@
"import org.artifactory.storage.db.servers.service.ArtifactoryServersCommonService\n", "import org.artifactory.storage.db.servers.service.ArtifactoryServersCommonService\n",
"import org.artifactory.common.ConstantValues\n", "import org.artifactory.common.ConstantValues\n",
"import org.slf4j.Logger\n", "import org.slf4j.Logger\n",
"import java.util.concurrent.TimeUnit\n", "import java.util.concurrent.TimeUnit\n",
"jobs {\n", "jobs {\n",
" clean(interval: 60000, delay: 600000) {\n", " clean(interval: 90000, delay: 900000) {\n",
" runCleanupHAInactiveServers()\n",
" }\n",
"}\n",
"executions {\n",
" cleanHAInactiveServers() { params ->\n",
" runCleanupHAInactiveServers()\n",
" }\n",
"}\n",
"def runCleanupHAInactiveServers() {\n",
" def artifactoryServersCommonService = ctx.beanForType(ArtifactoryServersCommonService)\n", " def artifactoryServersCommonService = ctx.beanForType(ArtifactoryServersCommonService)\n",
" def artifactoryInactiveServerCleaner = new ArtifactoryInactiveServersCleaner(artifactoryServersCommonService, log)\n", " def artifactoryInactiveServerCleaner = new ArtifactoryInactiveServersCleaner(artifactoryServersCommonService, log)\n",
" artifactoryInactiveServerCleaner.cleanInactiveArtifactoryServers()\n", " artifactoryInactiveServerCleaner.cleanInactiveArtifactoryServers()\n",
"}\n", "}\n",
"}\n",
"public class ArtifactoryInactiveServersCleaner {\n", "public class ArtifactoryInactiveServersCleaner {\n",
@@ -774,11 +803,11 @@
" for (member in allMembers) {\n", " for (member in allMembers) {\n",
" def heartbeat = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis() - member.getLastHeartbeat())\n", " def heartbeat = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis() - member.getLastHeartbeat())\n",
" def noHeartbeat = heartbeat > ConstantValues.haHeartbeatStaleIntervalSecs.getInt()\n", " def noHeartbeat = heartbeat > ConstantValues.haHeartbeatStaleIntervalSecs.getInt()\n",
" if (member.getServerState() == ArtifactoryServerState.UNAVAILABLE || noHeartbeat) {\n", " if (member.getServerState() == ArtifactoryServerState.UNAVAILABLE || ( noHeartbeat && member.getServerState() != ArtifactoryServerState.CONVERTING && member.getServerState() != ArtifactoryServerState.STARTING )) {\n",
" try {\n", " try {\n",
" log.info \"Running inactive artifactory servers cleaning task, found ${member.serverId} inactive servers to \" +\n", " log.info \"Inactive artifactory servers cleaning task found server ${member.serverId} to remove\"\n",
" \"remove\"\n",
" artifactoryServersCommonService.removeServer(member.serverId)\n", " artifactoryServersCommonService.removeServer(member.serverId)\n",
" }catch (Exception e){\n", " }catch (Exception e){\n",
" log.error \"Error: Not able to remove ${member.serverId}, ${e.message}\"\n", " log.error \"Error: Not able to remove ${member.serverId}, ${e.message}\"\n",
" }\n", " }\n",
@@ -833,7 +862,7 @@
" chunked_transfer_encoding on;\n", " chunked_transfer_encoding on;\n",
" client_max_body_size 0;\n", " client_max_body_size 0;\n",
" location /artifactory/ {\n", " location /artifactory/ {\n",
" proxy_read_timeout 900;\n", " proxy_read_timeout 2400;\n",
" proxy_pass_header Server;\n", " proxy_pass_header Server;\n",
" proxy_cookie_path ~*^/.* /;\n", " proxy_cookie_path ~*^/.* /;\n",
" proxy_pass http://127.0.0.1:8081/artifactory/;\n", " proxy_pass http://127.0.0.1:8081/artifactory/;\n",
@@ -1011,6 +1040,24 @@
"}\n", "}\n",
"http {\n", "http {\n",
" include mime.types;\n", " include mime.types;\n",
" variables_hash_max_size 1024;\n",
" variables_hash_bucket_size 64;\n",
" server_names_hash_max_size 4096;\n",
" server_names_hash_bucket_size 128;\n",
" types_hash_max_size 2048;\n",
" types_hash_bucket_size 64;\n",
" proxy_read_timeout 2400s;\n",
" client_header_timeout 2400s;\n",
" client_body_timeout 2400s;\n",
" proxy_connect_timeout 75s;\n",
" proxy_send_timeout 2400s;\n",
" proxy_buffer_size 32k;\n",
" proxy_buffers 40 32k;\n",
" proxy_busy_buffers_size 64k;\n",
" proxy_temp_file_write_size 250m;\n",
" proxy_http_version 1.1;\n",
" client_body_buffer_size 128k;\n",
" include /etc/nginx/conf.d/*.conf;\n", " include /etc/nginx/conf.d/*.conf;\n",
" default_type application/octet-stream;\n", " default_type application/octet-stream;\n",
" log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n", " log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n",
@@ -1167,7 +1214,7 @@
" chunked_transfer_encoding on;\n", " chunked_transfer_encoding on;\n",
" client_max_body_size 0;\n", " client_max_body_size 0;\n",
" location /artifactory/ {\n", " location /artifactory/ {\n",
" proxy_read_timeout 900;\n", " proxy_read_timeout 2400;\n",
" proxy_pass_header Server;\n", " proxy_pass_header Server;\n",
" proxy_cookie_path ~*^/.* /;\n", " proxy_cookie_path ~*^/.* /;\n",
" proxy_pass http://127.0.0.1:8081/artifactory/;\n", " proxy_pass http://127.0.0.1:8081/artifactory/;\n",

View File

@@ -6,12 +6,22 @@ import org.slf4j.Logger
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
jobs { jobs {
clean(interval: 60000, delay: 600000) { clean(interval: 90000, delay: 900000) {
runCleanupHAInactiveServers()
}
}
executions {
cleanHAInactiveServers() { params ->
runCleanupHAInactiveServers()
}
}
def runCleanupHAInactiveServers() {
def artifactoryServersCommonService = ctx.beanForType(ArtifactoryServersCommonService) def artifactoryServersCommonService = ctx.beanForType(ArtifactoryServersCommonService)
def artifactoryInactiveServerCleaner = new ArtifactoryInactiveServersCleaner(artifactoryServersCommonService, log) def artifactoryInactiveServerCleaner = new ArtifactoryInactiveServersCleaner(artifactoryServersCommonService, log)
artifactoryInactiveServerCleaner.cleanInactiveArtifactoryServers() artifactoryInactiveServerCleaner.cleanInactiveArtifactoryServers()
} }
}
public class ArtifactoryInactiveServersCleaner { public class ArtifactoryInactiveServersCleaner {
@@ -29,10 +39,9 @@ public class ArtifactoryInactiveServersCleaner {
for (member in allMembers) { for (member in allMembers) {
def heartbeat = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis() - member.getLastHeartbeat()) def heartbeat = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis() - member.getLastHeartbeat())
def noHeartbeat = heartbeat > ConstantValues.haHeartbeatStaleIntervalSecs.getInt() def noHeartbeat = heartbeat > ConstantValues.haHeartbeatStaleIntervalSecs.getInt()
if (member.getServerState() == ArtifactoryServerState.UNAVAILABLE || noHeartbeat) { if (member.getServerState() == ArtifactoryServerState.UNAVAILABLE || ( noHeartbeat && member.getServerState() != ArtifactoryServerState.CONVERTING && member.getServerState() != ArtifactoryServerState.STARTING )) {
try { try {
log.info "Running inactive artifactory servers cleaning task, found ${member.serverId} inactive servers to " + log.info "Inactive artifactory servers cleaning task found server ${member.serverId} to remove"
"remove"
artifactoryServersCommonService.removeServer(member.serverId) artifactoryServersCommonService.removeServer(member.serverId)
}catch (Exception e){ }catch (Exception e){

View File

@@ -106,6 +106,24 @@ cat <<EOF >/etc/nginx/nginx.conf
http { http {
include mime.types; include mime.types;
variables_hash_max_size 1024;
variables_hash_bucket_size 64;
server_names_hash_max_size 4096;
server_names_hash_bucket_size 128;
types_hash_max_size 2048;
types_hash_bucket_size 64;
proxy_read_timeout 2400s;
client_header_timeout 2400s;
client_body_timeout 2400s;
proxy_connect_timeout 75s;
proxy_send_timeout 2400s;
proxy_buffer_size 32k;
proxy_buffers 40 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 250m;
proxy_http_version 1.1;
client_body_buffer_size 128k;
include /etc/nginx/conf.d/*.conf; include /etc/nginx/conf.d/*.conf;
default_type application/octet-stream; default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' log_format main '$remote_addr - $remote_user [$time_local] "$request" '
@@ -141,7 +159,7 @@ server {
chunked_transfer_encoding on; chunked_transfer_encoding on;
client_max_body_size 0; client_max_body_size 0;
location /artifactory/ { location /artifactory/ {
proxy_read_timeout 900; proxy_read_timeout 2400;
proxy_pass_header Server; proxy_pass_header Server;
proxy_cookie_path ~*^/.* /; proxy_cookie_path ~*^/.* /;
proxy_pass http://127.0.0.1:8081/artifactory/; proxy_pass http://127.0.0.1:8081/artifactory/;

View File

@@ -107,6 +107,24 @@ cat <<EOF >/etc/nginx/nginx.conf
http { http {
include mime.types; include mime.types;
variables_hash_max_size 1024;
variables_hash_bucket_size 64;
server_names_hash_max_size 4096;
server_names_hash_bucket_size 128;
types_hash_max_size 2048;
types_hash_bucket_size 64;
proxy_read_timeout 2400s;
client_header_timeout 2400s;
client_body_timeout 2400s;
proxy_connect_timeout 75s;
proxy_send_timeout 2400s;
proxy_buffer_size 32k;
proxy_buffers 40 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 250m;
proxy_http_version 1.1;
client_body_buffer_size 128k;
include /etc/nginx/conf.d/*.conf; include /etc/nginx/conf.d/*.conf;
default_type application/octet-stream; default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' log_format main '$remote_addr - $remote_user [$time_local] "$request" '
@@ -142,7 +160,7 @@ server {
chunked_transfer_encoding on; chunked_transfer_encoding on;
client_max_body_size 0; client_max_body_size 0;
location /artifactory/ { location /artifactory/ {
proxy_read_timeout 900; proxy_read_timeout 2400;
proxy_pass_header Server; proxy_pass_header Server;
proxy_cookie_path ~*^/.* /; proxy_cookie_path ~*^/.* /;
proxy_pass http://127.0.0.1:8081/artifactory/; proxy_pass http://127.0.0.1:8081/artifactory/;