[ Linux ] 아파치 동시접속자수 확인

#netstat -l 또는 netstat -nap | grep LISTEN (LISTEN 되는 모든 포트)
#netstat -nap | grep ESTABLISHED | wc -l ( 모든 서비스 동시 접속자 수)
#netstat -nap | grep :80 | grep ESTABLISHED | wc -l( 웹 동시 접속자 수)
#netstat -n|grep -F :80|egrep '(ESTAB|SYN)'|awk '{print $5}'|sed 's/:[0-9]*//'|sort -u|wc -l
  (웹서버 커넥션수 체크)


블로그 이미지

칩사마코더

,

레드햇 / CentOS에 / 된 CloudLinux의 경우 :

# yum install glibc.i686
# rpm -i mod_cloudflare-elX.latest.rpm

데비안 / 우분투의 경우 :

# dpkg -i mod_cloudflare-XXXXX.latest.deb

RHEL / CentOS에 / 된 CloudLinux

RHEL / CentOS에 / 된 CloudLinux 7 (64 비트) RHEL은 / CentOS에 / 된 CloudLinux 6 (64 비트)


wget 으로 위 링크의 파일을 다운 받고


다운 받은 파일 명으로 아래와 같은 명령어를 실행후 아파치 재시작


 rpm -i mod_cloudflare-elX.latest.rpm


위 명령을 다운 받은 파일명으로 변경후 아파치 재시작하면 


방문자의 실제 아이피를 확인할수 있다.

블로그 이미지

칩사마코더

,

웹접속 속도가 느려 졌을때 점검 해보기

→ 웹 속도가 느려졌을 때 문제를 해결해 보기 위해서는 다음과 같은 방법들을 사용해 보면 됩니다.

      1) 현재 사용하는 컴퓨터에서 느려지는 해당 서버로 ping을 보내본다.
         ( time<10ms이면 지극히정상이다. 네트웍 쪽으로는 문제가 없는것이다. )

      2) 아파치 웹로그가 많이 쌓여 있는지 체크한다.  (위치 : /usr/local/apache/logs/ 또는 /usr/local/apache2/logs/)
         -  아파치의 웹로그는 최대 생성할수 있는 크기가 2G이며, 웹 로그의 크기가 커질수록 로그 파일을 읽어서 제일 하단에 로그를
          쌓아야 하므로 로그파일이 클수로 웹 접속속도가 떨어질 수밖에 없다.
         - 로그가 2G 이상되거나 하면 아래와 같은 명령으로 로그를 삭제후 데몬을 재가동 한다.
           예) cat /dev/null > access_log   (로그화일명)
                  /usr/local/apache/bin/apachectl restart   (apache 재가동)

     3) 현재 80번 포트를 사용해서 웹에 접속중인 사용자들의 현황을 살펴본다.
        netstat -nap | grep :80 | grep EST | wc -l 이란 명령을 사용하면 현재 웹에 접속되어 있는 프로세서 수를 확인할수 있다.
        이 수가 httpd.conf에서 설정한 Maxclient와 가깝거나 혹은 더 많지는 않은지 살펴본다.

     4) top 명령으로 현재 cpu의 사용률이나, 메모리 사용량등을 체크해본다. 

블로그 이미지

칩사마코더

,

Client가 접속하면 서버를 경유하기 때문에 CloudFlare Server IP로 찍힌다.

php단에서는 $_SERVER['HTTP_CF_CONNECTING_IP'] 헤더에 Real IP가 찍히기 때문에

해당 헤더 존재시 IP를 반환해주면 되지만 HTTP 서버단에서는 위와 같이 간단하게는 안되고

스크립트를 짜주거나 모듈을 만들어 넣어줘야하는 불편함이 있어

CloudFlare에서는 관련 확장 모듈을 지원한다.

[관련 주소 : https://www.cloudflare.com/resources-downloads/#mod_cloudflarehttps://github.com/cloudflare/mod_cloudflare]

패키지나 git에 있는 c 소스나 아무거나 사용하면 된다.


[ Git 소스 설치법 (cPanel 사용시) ]

# wget https://raw.githubusercontent.com/cloudflare/mod_cloudflare/master/EasyApache/installer.sh
# bash installer.sh


[ RedHat(CentOS) 계열 apxs 설치법 ]

# yum install libtool httpd-devel
# wget https://www.cloudflare.com/static/misc/mod_cloudflare/mod_cloudflare.c
# apxs -a -i -c mod_cloudflare.c

httpd.conf에서 

LoadModule cloudflare_module /usr/lib/apache2/modules/mod_cloudflare.so

추가


[ RedHat(CentOS) 계열 패키지 설치법 ]

# yum install glibc.i686
# rpm -i mod_cloudflare-elX.latest.rpm

자동으로 아파치와 연동되지만 수정필요시 /etc/httpd/conf.d/cloudflare.conf를 확인한다.



타OS설치 방법도 OS명령어만 다를뿐 방법은 같다.

패키지 URL은 위의 첫번째 URL에 들어가면 있다.

블로그 이미지

칩사마코더

,

아파치 접속이 많은 아이피 뽑기


아파치 로그 파일이 있는 곳으로 cd var/log/httpd  이동한후 


예)

cat access* | awk '{print $1}' | sort | uniq -c | sort 


위 명령어를 치면 아이피들이 잡히지만 


CloudFlare 사용할 경우 실 접속자의 아이피가 나오지 않고


클라우드 아이피가 잡히는데 httpd.conf 파일을 아래와 같이 수정하면


실제 접속 아이피를 뽑아낼수 있다.



<IfModule log_config_module>


    <IfModule log_config_module>

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{CF-Connecting-IP}i\" \"%{Referer}i\" \"%{User-Agent}i\"" cf_custom


    CustomLog "logs/access_log" cf_custom


    <IfModule logio_module>

          LogFormat "%h %l %u %t \"%r\" %>s %b \"%{CF-Connecting-IP}i\" \"%{Referer}i\" \"%{User-Agent}i\"" cf_custom

    </IfModule>


</IfModule>



CF-Connecting-IP // 이부분이 실제 아이피를 뽑아내는 부분임


httpd.conf 파일 변경후 실제 아이피 뽑아보기

cat access_log | awk '{print $11}' | sort | uniq -c


결과를 check.txt 파일로 저장

cat access_log | awk '{print $11}' | sort | uniq -c > check.txt



tail -20000 access_log | awk '{print $1}' | sort | uniq -c > /var/www/check.txt


블로그 이미지

칩사마코더

,