저는 불당썸을 잘 이용하고 있는 NBA Mania라는 커뮤니티 운영자입니다.
현재 동시 접속자 수가 1000명 정도인 커뮤니티를 운영하고 있는데요,
이미지가 30개 정도 올라오면 썸네일을 생성하는데 시간이 상당히 오래 걸리며 서버 로드가 폭증하는(top load가 28~30까지 치솟음)는 문제가 있는데요, 이 것이 어떤 이유에선지는 모르겠지만 이 프로그램을 개발하신 불당님께서는 혹시 방법을 알지 않으실까 해서 이렇게 질문 드리게 되었습니다.
getimagesize 함수의 퍼포먼스 문제
제가 알아보니 http:// 등의 url 형태로 돼 있는 이미지를 getimagesize로 읽어드리면 이미지를 다운로드하기 때문에 시간이 많이 걸린다고 하는 것 같았습니다. 그래서 저희 서버로 업로드 돼 있는 이미지들만 썸네일 생성을 하게끔 불당썸을 수정 했습니다. 그래서 퍼포먼스가 좋아지긴 했습니다만 아직 완벽하진 않습니다. 원인이 getimagesize가 아닐 수도 있다는 이야기 같아요.
30장 정도의 이미지를 리사이즈해서 썸네일 생성한다고 쳤을 때 썸네일 생상에 수십초 정도가 걸리는데 워낙 활성 방문객이 많아서 이 시간 동안 수십명이 접속을 하게 되고 서버 로드가 폭증하게 돼서 서비스가 1~2분 정도 마비 됩니다.
해결책
썸네일 생성이 오래 걸리는 원인을 찾으면 좋겠지만 그러기 힘들거나(만약 아신다면 알려주세요) 원래 오래 걸리는 작업이라면, 대안으로 작성자는 자기 글을 꼭 확인할테니 작성자만 썸네일 생성을 할 수 있도록 하는 게 어떨까 생각해 봤습니다. 그렇게 하면 다수의 사용자가 썸네일 생성 명령을 내래지 않게 되고 서버 로드 폭증 문제를 막을 수 있다는 생각이 들었거든요.
어떻게 불당썸 프로그램을 수정하면 썸네일을 작성자만 생성하도록 할 수 있을까요? 프로그램이 워낙 복잡하고 방대해서 이렇게 개발자분께 직접 도움을 청하러 왔습니다.
긴 글 읽어주셔서 감사드리고, 도움 주실 수 있는 부분이 있으시면 도움 부탁드리겠습니다.
κ ϴ.
Ҵ ڸǰ resize (b4.lib.php) ̹ ܺο ó ʰ ϴ ڵ尡 ֽϴ.
ø resize ̿Ͻø κ DZ մϴ.
ڵ嵵 մϴ.
resize_data( $view[wr_content] ) ;
===
// ̹ θ (ܺ? ? ΰ ? ?)
if (preg_match("/^(http|https|ftp|telnet|news|mms)\:\/\//i", $img['src'])) {
// ִ ̹?
$img_src = @getimagesize($img['src']);
if (preg_match("/" . $_SERVER[HTTP_HOST] . "/", $img[src], $matches)) {
$url = parse_url($img[src]);
$img[src] = $url[path];
$thumb_path = "1";
} else {
return $return;
}
} else {
$thumb_path="1";
}
opencode α ؼ ̰, κ H/W ƾ մϴ.
Ȳ ٸ HW OS Ͻô ʿ Դϴ.
α ذ κ ƴϰŵ.
1. swap . swap ǰ ִٸ ̹ ۾ disk Ͼ ʾ ֽϴ.
swap ٴ¸ ֵ OS ؾ մϴ.
2. Disk IO ǰ ִ ž մϴ.
۳ HP 5븦 űԷ ־µ, ؼ ݳ Raid κ Ͽϴ.
HP ؼ κ ý HDD write cache OFF صΰ ֽϴ.
̰ ̹ , ɰ ӵ ϴ.
HP DL120 G7 - 1뿡 ư Դϴ. 220 Դϴ.
http://www.2cpu.co.kr/bbs/board.php?bo_table=sell&wr_id=38098
ý ,
״ 200 Ѵ ŰἭ ϸ մϴ.
̹ ƴ, MySQL ֽϴ.
ӵ ܼ Լ Ǵ ƴ 찡 ŵ.
disk i/o ý , mysql Դϴ.
Ȯؼ IO 캼 ֵ ϰڽϴ.
ٺ ã ͳ. 亯 帳ϴ!
MySQL ̺ myisam disk ϸ connection ϴ.
swap ٸ raid ϴ ΰ ȿ ﰢԴϴ.
write cache ̷ Ȳ cache óDZ Դϴ.
Ҵѵ ƴѵ, Ͻô ϴ ^^