Varnish 설치 단계(5)

12579 단어 서버관리varnish
3. 관리 varnish 실행 로그 varnish는 메모리 공유 방식으로 로그를 제공합니다. 이것은 두 가지 로그 출력 형식을 제공합니다. 그것이 바로 가 가지고 있는 varnishlog 명령을 통해 varnish의 상세한 시스템 실행 로그를 얻을 수 있습니다.예:

  
  
  
  
  1. [root@varnish-server ~]#/usr/local/varnish/bin/varnishlog -n /data/varnish/cache  
  2. 0 CLI          - Rd ping  
  3. 0 CLI          - Wr 200 PONG 1279032175 1.0  
  4. 0 CLI          - Rd ping  
  5. 0 CLI          - Wr 200 PONG 1279032178 1.0  

는 자체 가지고 있는varnishncsa 명령을 통해apache의combined 출력 형식과 유사한 로그를 얻을 수 있습니다.예:

  
  
  
  
  1. [root@varnish-server ~]#/usr/local/varnish/bin/varnishncsa  -n  /data/varnish/cache  

로그를 한 파일에 출력할 수도 있습니다. "-w"매개 변수를 통해 지정하면 됩니다.

  
  
  
  
  1. [root@varnish-server ~]#/usr/local/varnish/bin/varnishncsa -n /data/varnish/cache \  
  2. >-w /data/varnish/log/varnish.log  

varnish 두 가지 로그 출력 형식 중 첫 번째는 대부분의 상황에서 반드시 필요한 것이 아니다. 여기서 두 번째 로그 출력 형식의 설정 방식을 중점적으로 소개한다.다음은 varnishncsa라는 셸 스크립트를 작성하고 이 파일을/etc/init에 넣습니다.d 디렉토리에서 varnishncsa 스크립트의 전체 내용은 다음과 같습니다.

  
  
  
  
  1. #!/bin/sh  
  2.  
  3. if [ "$1" = "start" ];then  
  4. /usr/local/varnish/bin/varnishncsa -n /data/varnish/cache  -f |/usr/sbin/rotatelogs /data/varnish/log/varnish.%Y.%m.%d.%H.log 3600 480 &  
  5.  
  6. elif [ "$1" = "stop" ];then  
  7.       killall varnishncsa  
  8. else   
  9.                 echo $0 "{start|stop}"  
  10. fi  
  11.  

이 스크립트에서 파이프라인을 통해 로그를'rotatelogs'로 가져옵니다. 로타telogs는 파일 분할 도구입니다. 지정한 시간이나 크기 등을 통해 로그 파일을 분할할 수 있습니다. 그러면 로그 파일의 과도한 성능 문제를 피할 수 있습니다.그 중에서'3600'은 한 시간, 즉 시간당 하나의 로그 파일을 생성하는 것이다.'480'은 시간대 매개 변수이고 중국은 여덟 번째 시간대로 UTC에 비해 480분 차이가 난다. 480을 설정하지 않으면 로그 기록 시간과 서버 시간이 8시간 차이가 난다.rotatelogs 명령 사용법에 관해서는 더 이상 상세하게 설명하지 않습니다.varnish 로그에 대한 모니터링을 통해 varnish의 운행 상태와 상황을 알 수 있습니다.그런 다음 이 스크립트를 승인합니다.

  
  
  
  
  1. [root@varnish-server ~]#chmod 755 /etc/init.d/varnishncsa  

마지막으로 다음과 같은 방법으로 로그를 시작하고 닫을 수 있습니다.

  
  
  
  
  1. [root@varnish-server ~]#/etc/init.d/varnishncsa  {start|stop }  

 
4. Varnish 관리
1. varnish 프로세스를 보면 위의 설명을 통해 varnish가 시작할 수 있습니다. 다음 명령을 실행하면 varnish가 정상적으로 시작되었는지 확인할 수 있습니다.

  
  
  
  
  1. [root@varnish-server ~]# ps -ef|grep varnish  
  2. root     29615     1  0 00:20 pts/1    00:00:00 /usr/local/varnish/bin/varnishncsa -n /data/varnish/cache -f  
  3. root     29616     1  0 00:20 pts/1    00:00:00 /usr/sbin/rotatelogs /data/varnish/log/varnish.%Y.%m.%d.%H.log 3600 480  
  4. root     29646     1  0 00:21 ?        00:00:00 /usr/local/varnish/sbin/varnishd -P /var/run/varnish.pid -a 192.168.12.246:80 -T 127.0.0.1:3500 -f /usr/local/varnish/etc/vcl.conf -u varnish -g varnish -w 2,51200,10 -n /data/varnish/cache -s file,/data/varnish/cache/varnish_cache.data,4G  
  5. varnish  29647 29646  0 00:21 ?        00:00:00 /usr/local/varnish/sbin/varnishd -P /var/run/varnish.pid -a 192.168.12.246:80 -T 127.0.0.1:3500 -f /usr/local/varnish/etc/vcl.conf -u varnish -g varnish -w 2,51200,10 -n /data/varnish/cache -s file,/data/varnish/cache/varnish_cache.data,4G  

명령 실행 결과에서 알 수 있듯이 PID가 29615와 29616인 프로세스는 varnish의 로그 출력 프로세스이고, PID가 29646인 프로세스는 varnishd의 메인 프로세스이며, PID가 29647인 하위 프로세스를 파생시켰다.이 점은 아파치와 유사하다.varnish가 정상적으로 시작되면 80포트와 3500포트가 감청 상태여야 합니다. 다음 명령을 통해 볼 수 있습니다.

  
  
  
  
  1. [root@varnish-server ~]# netstat -antl|grep 3500  
  2. tcp        0      0 127.0.0.1:3500              0.0.0.0:*                   LISTEN        
  3. [root@varnish-server ~]#netstat -antl|grep 80    
  4. tcp        0      0 192.168.12.246:80           0.0.0.0:*                   LISTEN        
  5. tcp        1      0 192.168.12.246:41782        192.168.12.26:80            CLOSE_WAIT    

그 중에서 80포트는 varnish의 프록시 포트이고 3500은 varnish의 관리 포트입니다.2. varnish 캐시 효과와 상태를 보면 브라우저를 통해 대응하는 웹 페이지에 접근하여 varnish 캐시의 효과를 볼 수 있다. 만약에 varnish 캐시가 성공한다면 두 번째 웹 페이지를 여는 속도가 첫 번째보다 현저히 빠를 것이다. 그러나 이런 방식은 문제를 완전히 설명할 수 없다. 다음은 명령행 방식을 통해 웹 헤더를 보고 명중 상황을 보면 다음과 같다.

  
  
  
  
  1. [root@varnish-server ~]# curl -I http://www.ixdba.net/a/mz/2010/0421/11.html  
  2. HTTP/1.1 200 OK  
  3. Server: Apache/2.2.14 (Unix) PHP/5.3.1 mod_perl/2.0.4 Perl/v5.10.1  
  4. Last-Modified: Sat, 10 Jul 2010 11:25:15 GMT  
  5. ETag: "5e850b-616d-48b06c6031cc0"  
  6. Content-Type: text/html  
  7. Content-Length: 24941  
  8. Date: Fri, 09 Jul 2010 08:29:16 GMT  
  9. X-Varnish: 1364285597  
  10. Age: 0  
  11. Via: 1.1 varnish  
  12. Connection: keep-alive  
  13. X-Cache: MISS from www.ixdba.net 

# 여기서 "MISS"는 이번 액세스가 캐시에서 읽히지 않았음을 나타냅니다.이 페이지를 다시 열고 헤더 정보를 보십시오.

  
  
  
  
  1. [root@varnish-server ~]# curl -I http://www.ixdba.net/a/mz/2010/0421/11.html  
  2. HTTP/1.1 200 OK  
  3. Server: Apache/2.2.14 (Unix) PHP/5.3.1 mod_perl/2.0.4 Perl/v5.10.1  
  4. Last-Modified: Sat, 10 Jul 2010 11:25:15 GMT  
  5. ETag: "5e850b-616d-48b06c6031cc0"  
  6. Content-Type: text/html  
  7. Content-Length: 24941  
  8. Date: Fri, 09 Jul 2010 08:30:35 GMT  
  9. X-Varnish: 1364398612 1364285597  
  10. Age: 79  
  11. Via: 1.1 varnish  
  12. Connection: keep-alive  
  13. X-Cache: HIT from www.ixdba.net   

# "HIT"에서 알 수 있듯이 이 페이지에 두 번째 액세스할 때 캐시에서 내용을 읽습니다. 즉, 캐시 적중입니다.
캐시 적중률의 높낮이는 바로varnish의 운행 상태와 효과를 설명한다. 비교적 높은 캐시 적중률은 varnish의 운행 상태가 양호하고 웹 서버의 성능도 많이 향상된다는 것을 설명한다. 반대로 너무 낮은 캐시 적중률은 varnish의 설정에 문제가 존재할 수 있음을 설명한다. 그러면 조정이 필요하다. 따라서 전체적으로varnish의 적중률과 캐시 상태를 파악하는 것은 varnish의 최적화와 조정에 매우 중요하다.varnish는 varnishstat 명령을 제공합니다. 이를 통해 중요한 정보를 얻을 수 있습니다.다음은 varnish 시스템의 캐시 상태입니다.

  
  
  
  
  1. [root@varnish-server ~]#/usr/local/varnish/bin/varnishstat  -n /data/varnish/cache  
  2. Hitrate ratio:       10      100      113  
  3. Hitrate avg:     0.9999   0.9964   0.9964  
  4.  
  5.         9990        68.92        49.70 Client connections accepted  
  6.       121820       953.84       606.07 Client requests received  
  7.       112801       919.88       561.20 Cache hits  
  8.           68         0.00         0.34 Cache misses  
  9.         2688        33.96        13.37 Backend conn. success  
  10.         6336         1.00        31.52 Backend conn. reuses  
  11.         2642        33.96        13.14 Backend conn. was closed  
  12.         8978        29.96        44.67 Backend conn. recycles  
  13.         6389         1.00        31.79 Fetch with Length  
  14.         2630        32.96        13.08 Fetch chunked  
  15.          444          .            .   N struct sess_mem  
  16.           23          .            .   N struct sess  
  17.           64          .            .   N struct object  
  18.           78          .            .   N struct objectcore  
  19.           78          .            .   N struct objecthead  
  20.          132          .            .   N struct smf  
  21.            2          .            .   N small free smf  
  22.            3          .            .   N large free smf  
  23.            6          .            .   N struct vbe_conn  
  24.           14          .            .   N worker threads  
  25.           68         1.00         0.34 N worker threads created  
  26.            0         0.00         0.00 N queued work requests  
  27.         1201        11.99         5.98 N overflowed work requests  
  28.            1          .            .   N backends  
  29.            4          .            .   N expired objects    
  30.         3701          .            .   N LRU moved objects  
  31.       118109       942.85       587.61 Objects sent with write  
  32.         9985        71.91        49.68 Total Sessions  
  33.       121820       953.84       606.07 Total Requests  
  34.  

 
여기서 주의해야 할 몇 가지는 다음과 같다.  "Client connections accepted"는 클라이언트가 역방향 프록시 서버에 HTTP 요청을 성공적으로 보낸 총 수량을 나타낸다.'Client requests received'는 지금까지 브라우저가 역방향 프록시 서버에 HTTP 요청을 보낸 누적 횟수를 나타낸다. 긴 연결을 사용할 수 있기 때문에 이 값은 일반적으로'Client connections accepted'보다 크다. "Cache hits"는 역방향 프록시 서버가 캐시 영역에서 캐시를 찾고 적중시키는 횟수를 나타냅니다.'Cache misses'는 백엔드 호스트에 직접 접근하는 요청 수량, 즉 비적중수를 나타낸다. "N struct object"는 현재 캐시된 수량을 나타냅니다. "N expired objects"는 만료된 캐시 내용의 수를 나타냅니다.'N LRU moved objects'는 탈락된 캐시 내용의 개수를 나타냅니다.
본고는'dsafsa_기술 블로그'블로그에서 나온 것이니 저자에게 연락하세요!

좋은 웹페이지 즐겨찾기