목록본격 SE업무이야기 (19)
지니워의 일상다반사
회사의 테스트 서버가 위치하고 있는 사무실을 비워주게 되면서 그간 사용하던 테스트 서버를 철수하게 되었다. 개발자들이 개발에 사용하던 테스트 DB와 기타등등 필요한 것들을 다른 서버에 옮겨서 설치를 해주어야 했는데 마땅히 생각나는 서버가 없었다. 현재 사이트를 운용하는데 사용되는 웹서버들도 이래저래 필요에 의해 다른 용도로 활용하다보니 더이상 뺄 만한 여력도 없고... 그래서 처음 생각한 것이 PC한대에 리눅스를 설치하고 서버로 활용하는 것이었는데 리눅스 설치까지 완료했으나 패키지를 다운받을 수 있는 mirror사이트에 접속이 안되면서 슬슬 일이 꼬이기 시작했다. 인터넷은 연결되어 있었고 같은 repo정보를 가지고 있는 서버들은 괜찮은데 유독 이놈만 mirror 어쩌고 저쩌고 하면서 당췌 패키지를 다운 ..
어제에 이어 오늘도 DB에 관한 포스팅을 쓴다. 원래는 어제 포스팅 말미에 언급했던 것처럼 댓글에 DB튜닝의 결과를 적으려했으나 내용이 꽤 길어질 듯 하여 새롭게 포스팅을 작성한다. 일단 어제 걸어뒀던 delete작업은 약 세시간여만에 포기하기로 결정하고 프로세스를 kill해버렸다. '으잉?왜?????????????????????????????' 라고 생각할 수도 있겠다. delete작업을 중지했던 이유는 간단한데 시간이 엄청나게 오래걸리기 때문이었다. 이는 MySQL의 알고리즘 때문인데 데이터에 대한 작업 수행속도를 높이기 위해 Index를 설정해놓아도 테이블에서 일정 수치 이상의 데이터 조작이 감지되면 Index를 사용하지 않고 데이터를 모두 읽고 가공하려 하기 때문이다. 쉽게 이야기해서 100이라는..
DB용량이 하루가 다르게 커져가고 있다. 하루에 작성되는 글의 수도 엄청날 뿐더러 그것보다 더 많은 코멘트, 꽤나 많은 용량의 이미지와 플래시등과 같은 첨부파일 등등...블로그가 공개된 곳이다보니 DB규모를 정확하게 적을 순 없지만 테이블 하나의 크기가 거의 100G에 육박하는 것도 있으니 그 크기가 얼마나 큰지 대략 짐작이 갈 것이다. 문제는 DB의 크기가 커지다보니 컨트롤 하기가 힘들어질 뿐더러 결정적으로 하드 디스크용량의 문제때문에 어떻게든 튜닝포인트를 찾아 불필요한 Data를 삭제하여 용량을 확보하는 것이 시급한 문제로 부각되기 시작한 것이다. 회사에 DBA가 없기 때문에 이 문제는 개발자 한명이 진행을 하기로 했지만 SE가 강건너 불구경 할 수 있는 처지는 아니다. DB는 서버에 설치되어 있고 ..
세상에는 리눅스 서버를 다루는 많은 SE들이 있다. 다른 직업도 마찬가지겠지만 SE간의 실력차를 가늠할 수 있는 몇 가지가 있다. 물론 SE마다 그 기준이 차이가 있겠지만 실력차를 평가할 수 있는 스킬 중 하나가 '서버보안'이라는 부분에 대해서는 대부분 동의할 것이다. 그만큼 보안은 SE에게 중요한 것이며 보안을 빼고서 SE를 논할 수 없다고 할 수 있을 정도로 중요하다. 특히, 요즘엔 DDos나 해킹, 웹쉘(WebShell)등의 서버를 위협하는 공격수단이 날로 발전하고 있기 때문에 보안의 중요성은 점점 더 커지고 있다. 물론 원칙적으로 보안은 '보안관리자' 혹은 '보안전문가'가 담당하는 것이 맞다. 하지만 현업에 종사하면서 '보안관리자'나 '보안전문가'를 만나본 적이 없다. '보안담당자는 상상속의 인물..
지난달에 있었던 일이다.여느날처럼 서버들의 로그를 확인하던 중에 아래와 같은 로그를 발견했다. Aug 8 12:06:27 s9 kernel: usb 1-1.2: reset full speed USB device number 29 using ehci_hcdAug 8 12:06:40 s9 kernel: usb 1-1.2: USB disconnect, device number 29Aug 8 12:06:40 s9 kernel: usb 1-1.2: new full speed USB device number 30 using ehci_hcdAug 8 12:06:40 s9 kernel: usb 1-1.2: New USB device found, idVendor=0557, idProduct=2221Aug 8 12:06:..
모든 서버에 적용 가능한 최적화 된 설정. 과연 이런 설정이 존재할까?개인적으로 이러한 설정은 존재할 수 없다고 생각한다. 모든 것을 아우르기에는 변수가 너무 많고 '최적화'라는 목표에 대한 개인적인 시각차가 존재하기 때문이다. 예를 들어, 작은 쇼핑몰의 서버를 관리하는 SE와 대형 커뮤니티 사이트를 관리하는 SE에게'서버가 좀 더 원활하게 운영되도록 하려면 어느 정도 업그레이드를 해야 할까요?'라고 물었을 때, 동일한 대답이 나오기는 어려울 것이다. 작은 쇼핑몰 정도의 규모라면 쿼드코어 혹은 옥타코어 정도만 되어도 서버가 돌아가겠지만 대형 커뮤니티 사이트 같은 경우(뽐뿌, 디시, 일베, 오유, 웃대 등등)에는 (옥타코어 x 2) x 서버50대 ~ 100대 정도가 되어야 서비스가 돌아갈 것이다.즉, SE..
리눅스에는 기본적으로 iptables라는 방화벽 도구가 있다. 몇가지 규칙설정만으로 훌륭한 방화벽 역할을 하기는 하지만 규칙 설정이 조금 까다로운 부분도 있고 처음 리눅스를 접하는 사람이라면 '헐...이게 뭐임?' 이라는 반응을 내보이는 경우가 대부분이다. 나도 처음엔 그랬었다. 물론 지금도 똑같다는 것은 함정...ㅠ어찌됐건 iptables가 훌륭한 방화벽인것은 분명하지만 좀 더 사용이 간편한 방화벽이 있다. 그건 바로 APF(Advance Policy Firewall). iptables를 좀더 쉽게 사용할 수 있게끔 하는 역할 + iptables에서 좀 더 발전된 성능을 가진 방화벽 도구라고 생각하면 될 듯 하다. 일단 설치방법부터 설명하겠다. 1. wget http://www.rfxnetworks.c..
/etc/init.d/nginx에 스크립트를 생성하여야 nginx의 서비스를 이용할 수 있다. 즉, start, stop, reload등의 기능을 사용하여 nginx를 제어 할 수 있다는 말이다. 처음 nginx를 설치한 후 nginx 서비스를 시작하려고 하면 아래와 같은 메세지와 함꼐 서비스가 시작되지 앟는다. service nginx does not support chkconfig 굳이 해석하자면 chkconfig가 nginx를 지원하지 않는다 정도?쉽게 이야기해서 /etc/init.d/에 nginx관련 스크립트가 없기 때문에 명령을 내려도 알아듣지 못하는 것이다. nginx 스크립트 파일?그게 뭐지...-_-? 사실 실서버에 nginx를 설치할때는 미리 만들어놓은 각종 설정파일들을 rsync로 가져..
사내에 테스트 서버가 있다. 말그대로 여러가지 것들을 테스트 해보기 위해 마련된 서버인데 얼마전 pma를 설치한 서버에서 원인불명의 이유로 pma가 먹통이 되면서 Master DB 및 Slave DB를 연결하는 pma를 테스트 서버에 설치했다. Test DB까지 합쳐서 모두 5개 서버의 pma를 담당하게 된 것이다. 즉, 테스트 서버는 이제 없다 ㅠ 이거 모르고 nginx 설치하고 restart하는 바람에 pma 전체가 먹통이 되어버렸다 -_-...이제야 안거지만 pma사용할 때 nginx의 설정을 바꾸고 restart하면 php-fpm도 restart해줘야 pma가 정상적으로 작동한다. 아마 php-fpm이 nginx의 설정에 영향을 받는 것 같다. 이렇게 영향을 받고 있는 가운데 nginx가 rest..