centos 7 상 nginx + uwsgi 성능 개선
서버 설정: 24 cpu + 200 G mem + 1T disk
시스템: centos 7.1
배치: kesytone nginx + uwsgi
먼저 키스 톤 을 nginx + uwsgi 백 엔 드 에 배치 합 니 다.
같은 기관실 의 다른 서버 에서 압력 측정 을 시작 합 니 다.
ab -r -n 100000 -c 100 -H "User-Agent: python-keystoneclient" -H "Accept: application/json" -H "X-Auth-Token: 65e194" http://keystonehost:35357/v2.0/
http 처리 가 정상 인 것 을 발견 하 였 습 니 다.그리고 병발 수 를 200 까지 고 쳐 보 니 약 50% 가 502 로 되 돌아 간 것 으로 나 타 났 다.
그리고 나 서 나 는 키스 톤 - api 를 키스 톤 자체 의 서비스 인 openstack - 키스 톤 으로 바 꾸 었 다.다시 200 병발 압력 측정: 처리 가 정상 적 이 고 502 로 돌아 가지 않 은 것 을 발견 했다.
ab -r -n 100000 -c 200 -H "User-Agent: python-keystoneclient" -H "Accept: application/json" -H "X-Auth-Token: 65e194" http://keystonehost:35357/v2.0/
문 제 는 nginx 와 uwsgi 에서 병발 처리 수 를 제한 해 야 한 다 는 것 을 대충 알 고 있 습 니 다.
nginx uwsgi 공식 자 료 를 찾 아 봤 습 니 다.원래 튜 닝 에는 여러 개의 매개 변수 가 있 고 시스템 자체 도 튜 닝 을 해 야 한다.
1. 먼저 ngix. conf 에서 처리 에 영향 을 주 는 설정 을 살 펴 봅 니 다.
user nginx;
worker_processes xx; # cpu ,
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
worker_rlimit_nofile 65535; # , <= worker_connections
events {
worker_connections 65535; # , 。
}
2. 시스템 설정 sysctl. conf 보기
net.core.somaxconn = 2048 # , 。 128.
3. uwsgi 설정 최적화 / etc / uwsgi. d / admin. ini
workers = 24 #
listen = 65535 # socket 。 100。
최적화 하기 전에 병발 수가 100 을 넘 지 못 하 는 것 을 발 견 했 습 니 다. 그 이 유 는 바로 여기 입 니 다. uwsgi 의 socket 기본 링크 는 100 입 니 다.
튜 닝 을 마치 고 이 압력 으로 성능 을 측정 한 결과 10000 시 에 동시 다발 되 었 습 니 다.
ab -r -n 100000 -c 10000 -H "User-Agent: python-keystoneclient" -H "Accept: application/json" -H "X-Auth-Token: 65e194" http://keystonehost:35357/v2.0/
압력 측정 보고서:
Server Software: nginx/1.8.1
Server Hostname: keystonehost
Server Port: 35357
Document Path: /v2/
Document Length: 450 bytes
Concurrency Level: 15000
Time taken for tests: 30.136 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Total transferred: 72900000 bytes
HTML transferred: 45000000 bytes
Time per request: 4520.417 [ms] (mean)
Transfer rate: 2362.33 [Kbytes/sec] received
이 때 keystone 자체 서비스 openstack - keystone 으로 전환 합 니 다.병발 1000 시.
압력 측정 보고서:
Server Software:
Server Hostname: keystonehost
Server Port: 35357
Document Path: /v2/
Document Length: 450 bytes
Concurrency Level: 10000
Time taken for tests: 100.005 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Total transferred: 70800000 bytes
HTML transferred: 45000000 bytes
Time per request: 10000.507 [ms] (mean)
Transfer rate: 691.37 [Kbytes/sec] received
이 를 통 해 알 수 있 듯 이 openstack - keystone 서비스 가 1000 이 될 때 api 서 비 스 는 한계 에 이 르 렀 다.
그래서 nginx + uswgi 가 조 정 된 후에 nginx 의 고성능 이 바로 나타난다.
여러분, 더 좋 은 조정 방법 이 있다 면, 여러분 이 붙 여서 함께 공부 하 는 것 을 환영 합 니 다.
다음으로 전송:https://blog.51cto.com/evawalle/1750801
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.