centos 7 상 nginx + uwsgi 성능 개선

3637 단어
이전 장 에 서 는 nginx + uwsgi 를 구축 하여 키스 톤 을 뒤에 마 운 트 합 니 다.그러나 http 요청 이 일 정량 에 이 르 면 nginx 는 502 로 돌아 가 는 문 제 를 발견 했다.이 때문에 대규모 openstack 클 러 스 터 를 배치 해 야 하 는 저 는 골 치 아 픕 니 다. 요청 한 처리 능력 을 비교 해 보 았 습 니 다. keystone 원생 api 인 터 페 이 스 는 일 정량의 대규모 병행 요 구 를 견 딜 수 있 습 니 다.이것 은 나 로 하여 금 왜 nginx 가 웹 으로서 성능 이 키스 톤 api 자체 의 적재 능력 이 좋 지 않 은 지 생각 하 게 한다.그래서 나 는 압력 측정 을 해서 원인 을 찾 아 보 았 다.
   
    서버 설정: 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

좋은 웹페이지 즐겨찾기