서버(리눅스,XMPP 등)

게시물 검색
전체 5건 1 페이지
  • [트러블슈팅] 아파치 웹 서버 장애 해결하기
    이번 호에는 현재 웹 서버로 가장 많이 사용되고 있는 아파치 웹 서버의 장애 극복 방법에 대해 알아볼 것이다. 흔히 문제가 발생되는 장애의 원인을 살펴봄으로써 보다 안정적인 시스템 운영에 도움이 되도록 구성하였다.시스템 관리자는 시스템에 대해 보수적이어야 한다는 말이 있다. “보수적”이 라는 말은 특정한 정치적 성향을 뜻하는 것이 아니라 시스템에 대해 단 1%라 도 문제가 될 수 있는 여지를 제거하고, 각 유저에게는 불편함을 주지 않는 한 도 내에서 가급적 사용 권한을 제한하여 혹시나 있을지 모를 시스템의 침해나 크래킹 등에 대비해야 한다는 것을 뜻한다. 아울러 시스템 관리자는 새로운 룰 을 적용 또는 변경하거나 프로그램을 새로이 도입할 때에도 이 프로그램으로 인하여 다른 문제가 발생할 수 있는 여지는 없는지 여부를 신중히 검토 후 도입해야 한다.이번 호에서는 아파치 웹 서버를 운영시 접할 수 있는 여러 가지 장애와 이에 따르는 원인과 해결 방법을 찾아보도록 하겠다.접속이 느려지거나 접속이 안 될 때가끔 접속자가 많은 서버를 운영하다 보면 갑자기 웹 접속이 되지 않거나 접속 이 너무 느려 아파치 데몬 개수를 확인해 보면 httpd가 256개나 떠 있는 경우 가 있다. 기본적으로 아파치 웹 서버의 경우 Max Clients가 256으로 설정되어 있어 동시에 256개의 데몬이 뜨게 되면 더 이상의 접속을 받아들이지 않고, 기 존의 프로세스가 죽을 때까지 대기한 후 접속이 끊기게 되면 그제서야 접속을 받아들이게 된다.따라서 동시 접속이 많은 경우에는 이전의 웹 접속이 끊길 때까지 대기해야 하 므로 접속 속도가 느린 것처럼 느끼게 되는 것이다. 일반적으로 정상적인 접속 의 경우에 256개의 프로세스가 모두 뜨는 경우는 그리 많지 않기에 현재의 상 태가 비정상적인 접속인지 여부를 판단해야 한다. 이를 판단할 수 있는 방법 은 netstat -na | grep ES로 ESTA BLISHED된 연결 상태를 확인하여 클라이언트 의 IP가 정상적인 연결인지 여부를 확인하면 된다. 또는 netstat -na|grep ES|awk '{print $5}'|sort로 클라이언트의 IP만 따로 소트하여 확인해 봐도 된다. 통상적으로 HTTP 1.1 규약에서부터 적용되기 시작 한 KeepAlive 기능을 지정하였을 경우 한 클라이언트 IP에서 동시에 3~5개 정 도의 http 프로세스를 생성하므로 한 IP에서 3~5개 정도의 프로세스를 생성하는 것은 정상적인 현상이다. 비정상적인 접속의 경우에는 다음과 같은 이유가 있을 수 있다.서비스 거부 공격(DoS)이 가해졌을 때DoS는 동시에 서비스할 수 있는 프로세스의 한계가 있다는 점을 악용한 공격이 다. 한번의 실행으로 100개나 200개 등 원하는 만큼의 동시 접속을 맺은 후 이 접속을 끊지 않고 유지할 수 있는 공격 코드가 인터넷 상에 공개되어 있 다. 그러나 이러한 공격의 경우 공격지의 IP를 속이기가 매우 어려우므로 netstat으로 확인 후 비정상적인 접속으로 확인 될 경우 해당 IP를 차단하면 된다.특정 IP의 라우팅을 차단하는 방법은 다음과 같이 route를 이용한 방법과 iptables(커널 2.4 이상)를 이용한 방법 두 가지가 있다.include를 잘못하여 무한 루프가 돌 경우요즘에는 php와 mysql을 연동하여 많이 사용하고 있는데, 프로그래밍 과정에서 의 실수로 php 파일에서 같은 php 파일을 include하는 경우가 있다. 또는 a.php 파일에서 b.php 파일을 include하고 b.php 파일에서 다시 a.php 파일을 include하는 경우도 그러한 경우일 것이다. 이러한 경우에는 무한 루프가 돌 게 되어 결국은 아파치 데몬이 금새 Maxclients에서 지정한 개수로 차 버리게 되는데, 어떤 파일에서 무한 루프가 돌고 있는지 찾기가 힘들다. 따라서 임시로 다음과 같이 include를 하지 못하도록 차단을 하는 방법이 있다.# iptables -A INPUT -p tcp -i lo -s xxx.xxx.xxx.xxx --sport 1024:65535 -j DROP이는 같이 서버 내에서 include 시에는 lo(Lookback Interface)를 통해 sport 가 1024 이후의 하이 포트를 이용하여 통신한다는 특성을 이용한 것이다. 그러 나 이 설정을 하였을 경우 로컬 서버에서 클라이언트 포트를 전혀 사용할 수 없게 되므로 다른 서비스에도 장애가 되기 때문에 임시로만 사용하기 바란다. 또는 ps aux | grep http로 보이는 프로세스에서 ls -la/proc /pid/로 각각의 http 프로세스가 어떤 파일을 참조하고 있는지 일일이 추적하는 방법도 있다.(예:cwd -> /home/user1/public_html/infinite_loop/)프로세스가 과도한 메모리를 사용할 경우특별히 이상한 프로세스는 없는데, 시스템의 부하가 갑자기 올라가는 경우가 있다. 심할 경우에는 콘솔에서 키 작동이 되지 않아 제어 자체가 불가능한 경 우도 있는데, 이러한 경우는 어쩔 수 없이 시스템을 재 시작하는 수밖에 없다. 이는 의도적이든 아니든 유저가 cgi나 php 등의 프로그램을 잘못 짜서 과도한 메모리를 소모하는 프로세스를 실행하기 때문인 경우인데, 실제로 시스템의 메 모리를 많이 소모하는 프로그램을 짜는 것은 단 몇 줄의 코드로도 가능하다. 다음과 같이 메모리를 소모하는 간단한 C 코드를 작성해 보자(참고로 스크립트 키드의 악용을 막기 위해 코드 중 일부를 변경하였다)./* memory.c */ #include #include void html_content(void); int main() { char *some_memory; int size_to_allocate = ONE_K; int megs_obtained = 0; int ks_obtained = 0; html_content(); printf("Program Executed !!!"); while (1) { for (ks_obtained = 0; ks_obtained < 1024; ks_obtained++) { some_memory = (char *)malloc(size_to_allocate); if (some_memory == NULL) exit(EXIT_FAILURE); sprintf(some_memory, "Hello World"); } printf("Now allocated %d Megabytes\n", megs_obtained); } exit(0); } void html_content(void) { printf("Content-type: text/html\n\n"); }작성 후 gcc -o memory.cgi memory.c로 컴파일 한 후 이 파일을 http://domain.com/memory.cgi와 같이 웹에서 실행해 보도록 하자. 아무리 메 모리와 CPU의 여유가 있는 시스템이라 하더라도 이 프로그램을 실행하자마자 거의 통제 불능 상태로 되어 결국 시스템 재부팅하게 될 것이다. 이렇듯이 메 모리를 무한정 소모하는 것을 차단하기 위해서는 아파치의 설정 인자 (Directive) 중에서 RLimitMEM을 사용하여 차단할 수 있다. 이 인자는 아파치 웹 서버에서 생성된 특정 프로세스가 작동시 소요 가능한 최대 메모리의 양을 제한하는 것으로 메모리를 많이 소모하는 CGI가 작동할 때 이 인자에서 지정 된 메모리까지만 실행이 되고 그 이상 소요시에는 더 이상 작동하지 않도록 해 준다. 예를 들어 httpd.conf에 다음과 같이 설정하였다면 모든 디렉토리에서는 메모 리를 20MB나 최대 21MB까지만 사용이 가능하고 /home /special/public_html/* 디렉토리 이하에 접근 시에는 특별히 50MB까지 메모리 이용이 가능하게 된다.RLimitMEM 20480000 21504000 RLimitMEM 51200000 52224000실제로 위와 같이 설정 후 memory.cgi를 웹에서 호출하면 아래와 같이 일정량 의 메모리만 사용되고 중단하는 것을 확인할 수 있다. 이와 비슷한 인자로 CPU 점유율을 제한하는 RLimitCPU와 사용자당 프로세스의 개수를 제한할 수 있는 RLimitNPROC이 있다. 이에 대해서는 http://httpd.apache.org/docs-2.0/mod/core.html를 참고하기 바란다.용량 큰 파일의 업/다운로드시 부하가 유발될 경우누구나 업/다운로드가 가능한 자료실을 운영하고 있을 경우 사이즈가 너무 큰 파일을 업/다운로드 할 경우 부하가 많이 걸리게 되어 결국 시스템의 성능 저 하를 유발하게 된다. 최근 배포되는 게시판/자료실 프로그램에서는 대부분 업로드할 수 있는 용량 등을 제한할 수 있는 기능이 있지만 그렇지 않은 프로그램도 상당수 있어 웹 서버 차원에서 이 제한을 적절히 설정할 필요가 있다. 아파치에서는 이와 관련하여 웹 서버에서 업/다운로드 할 수 있는 파일의 사이즈를 제한하는 Limit RequestBody 기능을 이용할 수 있다.LimitRequestBody는 클라이언트가 요청시 http 프로토콜을 통해 서버가 제공 할 수 있는 메시지의 크기를 바이트 단위로 정의하는 것으로 무한대를 의미하는 0부터 2,147,483,647(2Giga)까지 설정 가능하며 이 설정으로 대용량의 파일 을 업/다운로드 하는 형태의 서비스 거부 공격을 차단할 수 있다. 이를 설정하는 방법은 httpd.conf를 열어 다음과 같은 라인을 추가하면 된다.LimitRequestBody 7168000 LimitRequestBody 10240000위와 같이 LimitRequestBody 인자를 설정하면 아파치 웹 서버를 이용하여 업/ 다운로드 하는 모든 파일의 사이즈를 7MB로 제한하고 /home/special/ 이하에 대해서는 10MB로 제한하게 된다. 위와 같이 설정시 지정된 사이즈를 초과하는 파일을 업/다운로드 시에는 다음 그림과 같은 에러 메시지가 뜨며 업/다운 로드가 되지 않는다.특정한 이름의 파일을 실행을 제한하려면최근에는 대부분의 사이트들이 대화방(채팅)을 위해 자바로 프로그래밍된 자바 대화방을 사용하는 추세이지만 얼마 전까지만 하더라도 C나 펄로 된 CGI 대 화방을 설치하여 사용하는 것이 유행이었다. 그런데 이 대화방의 경우 대화방 에 참여하는 유저 중 한 명이 글을 입력할 경우 모든 유저에게 이 내용이 실시 간으로 나타나야 하는 특성상 시스템의 메모리를 매우 많이 소모하는 대표적 인 프로그램 중 하나였다.따라서 채팅 CGI 프로그램을 원천적으로 사용할 수 없도록 하는 방법을 고민하게 되었는데, 해결 방법은 대부분의 채팅 프로그램이 xxxchat.cgi 또는 chatxxx.cgi라는 파일을 실행 파일 이름으로 한다는 특징을 이용하면 된다. 즉, httpd.conf를 열어 다음과 같이 설정하면 파일명에 ‘chat’이라는 단어 가 포함된 CGI 파일은 작동하지 않게 되는 것이다.Order allow,deny Deny from all이러한 방식으로 특정한 파일에 대해 웹에서의 접근을 차단할 수 있다. 따라 서 CGI 파일에 아무리 소유권과 실행 권한을 주었다 하더라도 웹 서버 자체에 서 접근을 거부하였으므로 웹에서 접근하면 Forbidden’에러가 나게 된다. 이러한 식으로 특정 파일 이름을 가진 파일의 실행이나 접근을 차단할 수 있다.검색 로봇의 접근 차단하기갑자기 특정한 IP 주소에서 짧은 시간에 많은 접속을 하여 시스템의 부하가 올라가 웹 접속 로그를 살펴보니 다음과 같이 이해할 수 없는 내용이 남는 경우 가 있다.211.51.63.4 - - [26/Sep/2001:22:19:42 +0900] "GET /robots.txt HTTP/1.0" 404 285 211.51.63.4 - - [26/Sep/2001:22:19:43 +0900] "GET /index.asp HTTP/1.0" 404 284 211.51.63.4 - - [26/Sep/2001:22:19:43 +0900] "GET /index.php HTTP/1.0" 404 284 211.51.63.4 - - [26/Sep/2001:22:19:43 +0900] "GET /index.php3 HTTP/1.0" 404 285 211.51.63.4 - - [26/Sep/2001:22:19:43 +0900] "GET /default.htm HTTP/1.0" 404 286 211.51.63.4 - - [26/Sep/2001:22:19:43 +0900] "GET /default.html HTTP/1.0" 404 287 211.51.63.4 - - [26/Sep/2001:22:19:43 +0900] "GET /default.asp HTTP/1.0" 404 286 211.51.63.4 - - [26/Sep/2001:22:19:43 +0900] "GET /default.php HTTP/1.0" 404 286 211.51.63.4 - - [26/Sep/2001:22:19:43 +0900] "GET /default.php3 HTTP/1.0" 404 287 211.51.63.4 - - [26/Sep/2001:22:19:43 +0900] "GET /main.htm HTTP/1.0" 404 283 211.51.63.4 - - [26/Sep/2001:22:19:43 +0900] "GET /main.html HTTP/1.0" 404 284 211.51.63.4 - - [26/Sep/2001:22:19:43 +0900] "GET /main.asp HTTP/1.0" 404 283 211.51.63.4 - - [26/Sep/2001:22:19:44 +0900] "GET /main.php HTTP/1.0" 404 283 211.51.63.4 - - [26/Sep/2001:22:19:44 +0900] "GET /main.php3 HTTP/1.0" 404 284무작위로 index.php, index.asp, index.php3, default.html, default.asp 등 의 파일을 순서대로 요청하는 것으로 보아 검색 엔진일 가능성이 높다고 가정 할 수 있다. 특히 robots.txt 파일을 요청하는 것으로 검색 엔진이라고 장담 할 수 있을 것이다.httpd.conf에서 Logformat를 common 대신 {User-agent} 변수를 추가하여 정의 하면 서버에 접근하는 에이전트 정보도 알 수 있는데, UA(User Agent)는 일반 적인 웹브라우저 뿐만 아니라 검색 로봇이나 방랑 로봇 등 웹 서버에 접속하여 웹페이지를 가져오거나 해석하는 모든 종류의 프로그램을 뜻한다. 이는 흔히 사용하는 익스플로러나 넷스케이프 등의 브라우저 외에도 라이코스의 스파이더(spider)나 알타비스타의 스쿠터(Scooter)와 같은 검색 로봇과 텔리포트(Teleport)나 WebZIP, GetRight 등 오프라인 브라우저 모두 UA의 범위에 속한다. 검색 로봇이 어떤 사이트를 방문하여 문서를 인덱싱하거나 오프라 인 브라우저가 페이지를 한꺼번에 요청하여 긁어 가는 것은 일반 사용자가 웹 브라우저로 서버에 접속하여 원하는 페이지를 보는 일반적인 경우와 그 성격 이 다르다. 여러 페이지를 동시에 요청하는 정도를 벗어나 아예 한 웹사이트 의 모든 페이지를 짧은 시간에 통째로 긁어가기도 하기 때문에 이러한 경우에 는 서버에 매우 많은 프로세스를 생성하면서 웹 서버의 로드가 크게 올라가게 되는 것이다. 특히 DB와 연동하는 사이트의 경우에는 심할 경우 정상적인 서비스를 하지 못 할 정도이다.모든 사이트가 검색 엔진에 등록될 필요는 없거나 또는 허용된 일부 유저만 접근이 가능한 페이지의 경우 로봇의 접근을 차단할 필요가 있으므로 이러한 경 우에는 다음과 같이 설정된 robots.txt 파일을 웹 서버의 최상위 / 디렉토리 에 두면 모든 검색 로봇이 /secure 디렉토리를 인덱싱하지 않는다.User-agent: * Disallow: /secureUser-agent: *”는 모든 로봇를 대상으로 한다는 것을 뜻하며 예를 들어 알타비스타 스쿠터 등 특정한 UA에 대해서만 설정하고 싶다면 다음과 같이 하면 된다.User-agent: scooter검색 로봇과 관련된 더 자세한 정보를 얻기 원한다면 다음의 사이트를 참고하 기 바란다.http://info.webcrawler.com/mak/projects/robots/robots.html http://info.webcrawler.com/mak/projects/robots/norobots.html아울러 웹 서버에서 특정한 유저 에이전트의 접근을 차단하려면 httpd.conf에 다음과 같이 BrowserMatch를 사용하여 설정해도 된다.BrowserMatch "WebZIP" go_out BrowserMatch "Teleport" go_out BrowserMatch "GetRight" go_out BrowserMatch "WebCopier" go_out BrowserMatch "NetZip Downloader 1.0" go_out BrowserMatch "NetZip-Downloader/1.0.62" go_out BrowserMatch "Teleport Pro/1.29" go_out BrowserMatch "Teleport Pro/1.24" go_out BrowserMatch "Teleport Pro/1.26" go_out Options Includes ExecCGI AllowOverride None Order allow,deny Allow from all Deny from env=go_out위와 같이 설정 시에는 /home/no-ua/ 디렉토리 이하에 대해서는 go_out이라는 변수에 지정한 WebZip이나 Teleport 등 UA 프로그램의 접근을 차단하게 된다. 다른 UA도 차단하고 싶으면 위와 같이 웹 서버의 로그를 살펴보아 에이전트 정 보에 남는 UA를 go_out으로 추가해 주면 된다. 같은 방식으로 만약 특정 디렉토리 이하에 대해서 MSIE 브라우저로 접근하지 못하도록 설정하려면 다음과 같 이 BrowserMacth를 이용한다. 이렇게 하면 에이전트 정보에 MSIE라 설정되는 UA는 차단될 것이다.BrowserMatch "MSIE" msie Options Includes ExecCGI AllowOverride None Order allow,deny Allow from all Deny from env=msie최근에는 각종 로봇이 버전을 새롭게 하며 계속적으로 나오고 있으므로 지속적으로 로그를 살펴보아 접근 통제를 하고자 하는 UA를 설정하는 것이 좋다.외부의 데이터 무단 링크로 인한 부하 없애기최근에 와레즈 사이트를 통해 게임이나 오락, 동영상 등 각종 데이터들이 공유 되면서 와레즈 사이트에서 관련 없는 임의의 서버에 데이터를 업로드한 후 무 단 링크하여 서비스하는 경우가 많다. 이러한 경우 데이터 전송량이 갑자기 늘 어 서버의 부하가 급격히 올라감은 물론 한정된 회선의 대역폭도 소모하게 되 어 서버를 관리하는 관리자들에게는 이러한 무단링크가 큰 골치 거리 중에 하 나다.대부분의 무단 링크가 대용량이기 때문에 이를 차단하기 위해 위와 같이 LimitRequestBody를 이용하여 임의의 용량 이상의 데이터에 대한 업/다운로드 용량을 제한하는 방법도 있지만 다음과 같이 BrowserMatch 대신 SetEnvIFNoCase Referer를 이용하는 방법도 있다.SetEnvIFNoCase Referer "warez" link_deny SetEnvIFNoCase Referer "free" link_deny SetEnvIFNoCase Referer "home" link_deny Order allow,deny allow from all deny from env=link_deny위와 같이 설정 시에는 Referer이 warez 또는 free나 home이 포함되었을 경우 이 사이트를 link_deny라는 변수에 할당하고, 환경변수가 link_deny일 때는 확 장자가 avi나 mprg, zip, asf 등인 파일에 대한 엑세스를 제한하고 있다. 따라서 홈페이지 주소에 warez나 free 또는 home이 포함된 주소에서 위의 데이터를 무단 링크하였을 경우에는 이를 차단할 수 있다. Nocase를 추가로 설정하였을 경우에는 대소문자를 가리지 않아 링크하는 사이트가 대소문자에 관계없이 http://my.warez.org/, http://My.Warez.Org/, http://MY. WAREZ.ORG/ 모두 적용된다.다른 확장자를 추가하고나 설정을 변경하고자 할 경우에는 정규식(Regular Expression)을 이용하여 설정하면 된다. 또는 이와는 반대로 아예 httpd.conf 에서 다음과 같이 설정할 수도 있다.ServerAdmin webmaster@tt.co.kr DocumentRoot /home/tt/public_html ServerName tt.co.kr ServerAlias www.tt.co.kr SetEnvIf Referer tt\.co\.kr link_allow SetEnvIf Referer www\.tt\.co\.kr link_allow SetEnvIf Referer ^$ link_allow…
    작성자최고관리자 시간 10-30 조회 11691
  • 아파치(웹서버)가 느려지거나 다운되는 원
    가끔 접속자가 많은 서버를 운영하다 보면 갑자기 웹 접속이 되지 않거나 접속이 너무 느려 아파치 데몬 개수를 확인해 보면 httpd가 256개나 떠 있는 경우가 있다.  그럼 먼저 웹서버가 갑자기 느려질 경우를 보자. 기본적으로 아파치 웹 서버의 경우 Max Clients가 256으로 설정되어 있어 동시에 256개의 데몬이 뜨게 되면 더 이상의 접속을 받아들이지 않고, 기존의 프로세스가 죽을 때까지 대기한 후 접속이 끊기게 되면 그제서야 접속을 받아들이게 된다.  따라서 동시 접속이 많은 경우에는 이전의 웹 접속이 끊길 때까지 대기해야 하므로 접속 속도가 느린 것처럼 느끼게 되는 것이다. 아래의 명령으로 동시접속을 체크 해보자  # netstat -anp | grep :80 | grep ESTAB | wc -l  또, 일반적으로 정상적인 접속의 경우에 256개의 프로세스가 모두 뜨는 경우는 그리 많지 않기에 현재의 상태가 비정상적인 접속인지 여부를 판단해야 한다. 이를 판단할 수 있는 방법은  # netstat -na | grep ES  ESTABLISHED된 연결 상태를 확인하여 클라이언트의 IP가 정상적인 연결인지 여부를 확인하면 된다. 또는  # netstat -na | grep ES | awk '{print $5}' | sort  클라이언트의 IP만 따로 확인해 봐도 된다.  통상적으로 HTTP 1.1 규약에서부터 적용되기 시작한 KeepAlive 기능을 지정하였을 경우 한 클라이언트 IP에서 동시에 3~5개 정도의 ttp 프로세스를 생성하므로 한 IP에서 3~5개 정도의 프로세스를 생성하는 것은 정상적인 현상이다. 그렇지 않고 여러개의 프로세스가 떠 있다면 비정상적인 접속 또는 부하를 일으키는 원인을 찾아봐야 할 것이다.  일단 top 명령을 이용하여 CPU 점유를 많이 하고 있는 프로세스들을 찾아야 할 것이다  # top -d 2  또는 잘못 짜여진 cgi 프로그램으로 인하여 시스템의 메모리를 몽땅 소비하는 프로그램이 실행 되고 있는지 살펴봐야 한다.  그리고 웹집이나 텔레포드 등의 로봇들이 접근하면 시스템은 현저하게 느려질 것 이다. 이러한 점들도 대비하여야 한다. 또한 스트리밍 서비스로 인한 부하도 점검해봐야 할 것 이다.  이번에는 웹서버가 정지되는 경우를 살펴보자. MaxClient 에 걸려 서버가 정지되는 경우가 발생 할 수 있다. 참고로 엊그제 새벽에 한참 맛있게(?) 자고 잇는데 이런 경우를 당했다 ㅡㅡ;  MaxClient 수치는 아파치 소스코드에서 초기 설정값이 설정되어 있기 때문에 아무리 수치를 올려 설정을 하여도 아파치 웹서버는 동시에 httpd 데몬은 256개 이상 생성할 수 없다. 동시에 256개의 데몬이 뜨게 되면 더 이상의 접속을 받아들이지 않고, 기존의 프로세스가 죽을 때까지 대기한 후 접속이 끊기게 되면 그제서야 접속을 받아들이게 된다.  그럼 어떻게 해야 할 것인가?  일단은 아파치 세팅 시 Max Client 수치를 올리도록 소스코드를 수정하면 된다. 아파치 소스를 보면 src/include 안에 httpd.h 라는 헤더파일이 있는데 HARD_SERVER_LIMIT 값이 256으로 정의되어 있다.  #ifndef HARD_SERVER_LIMIT #ifdef WIN32 #define HARD_SERVER_LIMIT 1024 #elif defined(NETWARE) #define HARD_SERVER_LIMIT 2048 #else #define HARD_SERVER_LIMIT 256 #endif #endif  윈도우는 1024 넷웨어는 2048 기타는 256으로 설정이 되어있는것을 볼 수 있다. 리눅스는 기타에 속한다..ㅋㅋㅋ 그럼 256의 수치를 변경한 다음 컴파일 하면 된다. 이것은 수치는 시스템 사양에 따른 적절한 조절이 필요하다. 되도록 4의 배수로 수치를 조정하길 바란다.  일단 셋팅을 이렇게 하였다면 적어도 Max Clients 에 걸려 웹서버가 정지당하는 일은 없을것이다. 하지만 그냥 귀차니즘으로 인하거나 서버사양이 좋지 않아 디폴트로 셋팅하였다면 아파치 설정파일에서 소한의 설정을 하여야 한다.  이는 웹서버가 느려지는 것과 다운되는 것에 대한 최소한의 노력이라고 생각하면 된다.  일단 Timeout 값의 수치를 변경하자. 이 값은 클라이언트에서 서버에 연결하엿을때 클라이언트와 서버간에 아무런 메세지가 발생하지 않았을 때 오류로 처리할 시간을 설정한 값이다. 보통 300으로 설정되어있다. 만약 네트워크 속도가 느리다면 수치를 조금 올려서 설정하는 것이 좋다.  다음은 MaxKeepAliveRequests 의 값을 수정하여야 한다. 이 값의 의미는 연결을 유지한체로 허용할 수 있는 최대 요구수를 나타낸다. 이 값이 0 이라면 제한하지 않는다는 의미가 되고 일반적으로 이 수치는 높게 설정하는 것이 좋다.  다음 KeepAliveTimeout 의 수치를 변경하자. 이 값은 동일한 방문자가 동일한 연결을 유지한 채로 다음 요청을 할 때 까지 연결을 유지한 채로 기다리는 시간을 허용하는 시간을 의미한다. 따라서 접속자가 많다면 클라이언트에서 설정시간내에 요청을 하지 않으면 연결을 끊음으로서 요청시 생성되었던 데몬을 Kill 할 수 있다.  이정도로 웹서버의 성능을 튜닝하엿다. 나머지 무한한 추가적인 기능은 각자 상황에 맞게 설정 할 수 있을것이다. …
    작성자최고관리자 시간 10-30 조회 9359
  • 작성자최고관리자 시간 06-13 조회 2856
  • 우분투 서버 세팅2
    0. jdk 설치
    $sudo apt-get install sun-java6-jdk

    tap 키로 이동 엔터

    1. Apache : sudo apt-get install apache2
    sudo apt-get install tomcat5.5 tomcat5.5-webapps tomcat5.5-admin
    apt-get 작동안하면
    A. Tomcat 다운로드
    http://tomcat.apache.org/
    # 'w g e t' “http://mirror.korea.ac.kr/apache/tomcat/tomcat-5/v5.5.27/bin/apache-tomcat-5.5.27.tar.gz”
    B. 압축 해제 및 설치
    # tar –zxvf apache-tomcat-5.5.27.tar.gz

    우선 아파치 2.2의 mod_jk 모듈부터 설치해야 해요. sudo apt-get install libapache2-mod-jk
    sudo gedit /etc/apache2/sites-available/default 초기 테스트 사이트 위치



    2. mysql 인증 모듈 : sudo apt-get install libapache2-mod-auth-mysql

    3. MySQL : sudo apt-get install mysql-server mysql-client

    4. PHP5 : sudo apt-get install php5-common php5 libapache2-mod-php5

    5. MySQL과 연동하기 위한 모듈 : sudo apt-get install php5-mysql

    6. 아파치 웹서버를 재시작 : sudo /etc/init.d/apache2 restart

    7. MySQL서버 정상 작동 확인 : sudo netstat -tap | grep mysql


    설치 완료 후 /etc/profile 에 다음의 내용을 입력 합니다.
    경로에 맞게 해주세요~

    sudo gedit /etc/environment

    아래구문을 위 파일 하단에 넣어준다.

    JAVA_HOME="/usr/lib/jvm/java-6-sun"



    java –version 명령어를 사용하여 정상적으로 자바가 설치 되었는지 확인합니다.…
    작성자최고관리자 시간 03-16 조회 2553
  • 우분투 서버 셋팅 1
    1. 패키지 캐쉬 갱신 및 자동 업그레이드 : apt-get update 또는 apt-get upgrade

    2. 원하는 패키지 찾기 : apt-cache search 파일명

    3. 패키지 삭제 : apt-get remove 패키지명 또는 dpke -P패키지명

    4. CD-ROM 목록추가 : apt-cdrom add

    5. 개별패키지 설치 : apt-get install 파일명

    6. 원하는 패키 찾은 다음 정보 출력 : apt-cache show 파일명

    7. 의존성 검사 수행후 패키지 업그레이드 : apt-get dist-upgrade

    8. dselect에서 선택한 패키지의 설치 및 삭제 : apt-get dselect-upgrade

    9. 설치된 패키지를 볼때 : dpkg -l

    10. 우분투 vi편집기 Tiny에서 vim 변경 : sudo apt-get install vim

    Ubuntu APM설치 삭제는 : remove…
    작성자최고관리자 시간 03-16 조회 3084

회원로그인

Copyright © 2001-2016 ITNANUM. All Rights Reserved..