Apache prefork에서 worker로 변경할때 문제

honillusion의 이미지

현재 prefork을 쓰고 있는데요, 서버부하 때문에 worker로 바꿔보려고 합니다.

테스트로 서버한대에 설치를 했는데 글작성시 도배방지를 위한 코드입력을 위해 출력되는 랜덤이미지만 안뜨네요. 아파치,시스템 로그에도 별다른 에러는 없습니다. worker로 옮겨갈때 추가로 해줘야하는 부분이 있나요? 컴파일 옵션에서 --with-mpm=worker 이것만 빼고 prefork로 컴파일하면 이미지 잘 뜹니다.

OS: CentOS 5.5
Apache: 2.2.16
PHP: 5.2.14

impactbar의 이미지

php를 쓰신다면 prefork를 추천합니다.

worker를 쓰신다면 php코드가 thread safe 하게 작성되어야 합니다.

위글은 php INSTALL 가이드에 있는 글입니다.

honillusion의 이미지

php 웹소스를 전부 손봐야한다는 말씀이신가요?

impactbar의 이미지

안되는 부분의 사용 함수가 쓰레드 세이프한지 우선 보는 것이 우선일듯 합니다.

현재 안보이는 문제는 문제가 발생하면 그때가서 ... ㅡㅡ;;;

honillusion의 이미지

아, 골치아프군요.

동접이 워낙 많아 성능 좀 높일려고 worker로 바꿔볼랬는데 prefork으로 그냥 쓰던지 해야겠네요.

답변 감사합니다.^^

impactbar의 이미지

prefork 로 가셔야 한다면 php와 정적이미지를 분리해서 한장비에서 두개의 아파치에서 운영한다면 메모리를 많이 절약하실 수 있습니다.

honillusion의 이미지

웹서버만 30대 가량인데 규모가 크다보니 worker로 가면서 서버댓수를 좀 줄이려고 했거든요. 평소는 괜찮은데 가끔 몰릴때가 있네요. 답변 감사합니다.^^

사랑천사의 이미지

worker MPM은 thread 기반이니... Apache만 worker로 하시면 안 되고 PHP도 직접 설치 하셨다면 thread 지원 및 thread safe 하게 동작하도록 컴파일 하시고 PHP에 추가 확장을 붙이신다면 그 부분 또한 그렇게 하셔야 합니다. 골치 안 아프시려면 prefork로 하시면서 몇 가지 가능한 튜닝들을 하시는게 좋습니다. 그게 어려우시면 nginx+FastCGI+PHP로 가시는 것도 하나의 방법으로 보입니다만, 그러려면 갈아치는 시간도 오래 걸릴 뿐더러 경험이 없으시다면 좀 골치아픈 다른 문제에 부디치실 수 있을 것도 같습니다. 저도 nginx 쪽으로 가는 것을 고민하고 있지만 실제로 해 본 적이 없어서 도움은 못 드릴 거 같네요.
-- 사랑천사 --
LECL | Blog
yeosong@gmail.com
yeosong@gmail.com(네이트온) ysnglee2000(Skype)

사람천사

송효진의 이미지

현재 코드의 php 5.3 에서의 호환성을 알아보시고,
5.3 에 포함된 php-fpm 기능으로 cgi 로 띄우신 후
아파치 대신 nginx 를 이용해 보세요.
성능향상 확실합니다.

5.2 에도 fpm 패치는 가능하지만 소스컴파일이 귀찮으니...
5.2 의 php-cgi 로 띄워도 되긴 합니다만, daemontools 같은것용 스크립트를 직접 작성해야 합니다.

nginx 는 max-connection 갯수가 의미 없을 정도이고,
fpm 은 60~80 개 정도로 띄워도 됩니다.

아파치의 256 은 이미지건 html 이건 php 건 1을 소비하기 때문에 php 만 256 개가 다 떠버리면 메모리 부족을 겪는 등의 문제가 있지만,
이렇게 하면 문제없죠.

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~
http://xenosi.de/

honillusion의 이미지

nginx로 한번 테스트해봐야겠네요. 답변 감사합니다.^^