본문 바로가기

Developer/Knowledge Base

(9)
SLF4J, 일부 서버만 로그가 남지않는 현상 序. 서비스의 라이브러리를 대대적으로 업데이트하는등의 리팩토링 작업을 진행했다.테스트 서버에서 아무 문제가 없는 것을 확인한 후 실서버에 배포를 했는데, 서버 20대 중 일부 서버들에서만 catalina.out에 로그가 쌓이지 않는것이다. 정확히는 tomcat이 찍는 스타팅 로그들은 쌓였지만 이후 발생하는 서비스 로그들이 하나도 쌓이지 않았다. 1. 몇차례 서버를 재기동해 보기도 하고 재배포해보기도 했다. 여전히 쌓이는 놈은 쌓이고 안쌓이는 놈은 안 쌓임..... 2. 서버별 환경차이를 확인 서버들이 한꺼번에 받았던 것이라, os버전은 물론 모든 어플리케이션 버전이 차이가 없었다. 파일 시스템의 권한도 완벽했으며, 용량 문제도 전혀 없었다. 3. 로그가 잘 쌓이는 서버와 안 쌓이는 서버의 tomcat 스..
로그 로테이션 방법 장단점 비교 리눅스환경에서 로그파일을 날짜별 혹은 용량별로 쌓게 하는 다양한 방법들이 존재한다. 각각은 장단점을 갖고 있는데, 용도에 따라 어떤 방법을 선택할지 결정하는 것이 마땅하다. 선택포인트가 될 장단점을 비교해보았다... 1. logrotate(한글) 리눅스의 기본어플리케이션이며, 로그를 쌓을때 로테이션을 주도록하는 것이 아니라, 이미 쌓인 로그파일을 조작하는 방식이다. 보통 cron에 의해 주기적으로 호출되어 로테이션 로그파일을 만든다. 장점 : 로테이션, 압축, 파일갯수 제한등 각종 로그관련 작업들이 한방에 가능하다. 단점 : 파이프방식을 통해 쌓여지는 로그파일의 경우, 기존파일 삭제가 불가능하기 때문에(삭제하면 로그파일이 쌓이지 않기 때문에) 프로세스를 내렸다 올리는 스크립트를 설정하거나 copytrun..
Quartz의 이중실행 증상 序. 로컬에서의 테스트에서는 극히 정상적으로 quartz스케쥴러가 작동하였고, 이를 테스트서버와 실서버로 옮겼을때는 동시에 두번씩 동작하는 문제가 발생했다. 세 서버의 Tomcat/Spring/Quartz의 버전은 완전히 동일... 1. 일단 큰 차이랄 수있는 OS/JVM의 차이를 의심하였다. 구글링을 해보니 비슷한 증상(윈도우 정상작동, 리눅스 스테이징으로 옮기니 발생)인 사람들을 여럿 발견... 희망이 보이기 시작.... 벗뜨.. 이런 얘기한 사람들은 다 답을 얻지 못함... 2. 다음은 Spring 혹은 Quartz의 버그를 의심. Spring + Quartz의 조합으로 비슷한 증상을 호소한 사람들이 미쿡(= 영어였다는 얘기다;;;)에는 꽤 많았다... 이는 web.xml에서 Spring의 Cont..
리눅스에서 일정기간 이상된 파일 삭제하기 휘발성으로 이용되는 파일들이나 로그파일등.. 파일이 생성된지 일정기간이 경과하면 파일을 삭제해야하는(하는게 좋은) 파일들이 있다. 이들을 삭제하기 위한 방법은.... * 생성된지 30일 이상 된 파일만 삭제 /usr/bin/find "대상디렉토리" -type f -ctime +30 -exec /bin/rm -rf {} \; * 생성된지 30일 이상 된 비어있는 디렉토리만 삭제 /usr/bin/find "대상디렉토리" -empty -type d -ctime +30 -exec /bin/rmdir {} \; 리눅스 버전에 따라 -ctime이 먹지 않는 경우가 있다. 이때는 -mtime으로 대체(의미는 약간 다르지만)한다. 이러한 쉘을 crontab에 하루단위로 동작하도록 등록해두면 편리하겠죵?
[펌+편집] 영문 PuTTY에서 한글사용하기 무료 텔넷/SSH 클라이언트인 Putty는 많은 사람들이 사용하는 유명한 프로그램이지만, 한글 입력문제가 있어왔다. 때문에 KLDP에서 한글화 작업프로젝트가 있어왔고, 그 결과물로 한글PuTTY가 돌아다니고 있다. 하지만 오리지널 PuTTY가 버전업을 계속하고 있는 반면, 한글 PuTTY는 그 후 버전업이 없는 상태라 계속해서 이전버전을 쓸 수 밖에 없다(요거 상당히 찝찝하다...). 또한, 한글 PuTTY에서는 Serial통신 기능이 빠졌다고 한다. 이미 깔려있던 영문 PuTTY로 한글을 쓸 순 없을까 고민해서 검색해 봤더니 인터넷에서 좋은 방법이 이미 나와 있었다. 방법대로 해보니 이상없이 한글입력이 되었다!! 참고로 나의 PuTTY는 0.60버전이다. 원문 : http://cafe.daum.net/..
[링크+편집] 웹사이트를 빠르게 만드는 다양한 Tip들 'Best Practices for Speeding Up Your Web Site' 라는 타이틀로 Yahoo에서 공개한 Tip들이다. http://developer.yahoo.com/performance/rules.html 비교적 손쉬운 노력으로 이룰 수 있는 소소한 퍼포먼스 향상 기술들이다.
전일의 로그파일 압축시키도록 crontab에 등록하기 Apache나 Tomcat을 비롯한 많은 서버 어플리케이션들이 로그를 생성하며, 그들은 날짜기반의 로그파일 명을 갖는 경우가 많다. 로그파일은 순수 텍스트기반의 파일로서 압축률이 매우 좋기 때문에, 지난 로그파일들은 압축해서 보관하는 것이 효과적이다. 일 단위 로그는 금일 24시가 지난뒤에야 최종 완성된 로그파일이 생기기 때문에 익일에 파일을 압축하여야 한다. 때문에 crontab에 다음과 같이 등록해준다. 1 0 * * * /opt/script/compress_log.sh compress_log.sh은 아래와 같이 편집하고 반드시 실행권한을 준다. gzip /usr/local/apache2/logs/access.log.`date +%Y%m%d --date="1 days ago"` 결국 일자가 포함된 파..
장시간 미사용된 DBCP 커넥션의 단절현상 ASF의 DBCP를 사용하나, 커넥션이 자주 사용되지 않는 Java Application의 경우에 Database에 의해서 커넥션이 단절되는 현상이 나타날 수 있다. MySQL의 경우에는 8시간동안 사용되지 않은 커넥션(DBCP가 물고있던..)은 MySQL이 강제로 끊어버리게 되는데, 이렇게 되면 Java Application이 기대대로 동작하지않게 된다. 보통은 아래와 같은 메시지가 나타나게 된다. 'com.mysql.jdbc.CommunicationsException: Communications link failure Last packet sent to the server was 18 ms ago.' 이러한 경우 MySQL의 JDBC설정 시 url="jdbc:mysql://127.0.0.1:3306/..