월별 글 목록: 2015년 7월월

Tomcat 을 운영하다 보면 manager 에 무단 접근을 시도하는 경우가 있다.

Tomcat 을 운영하다 보면

Screen Shot 2015-07-30 at 9.49.35 AM

이런식으로 manager 에 접속을 시도하는 bot 들이 있다.

해결책은

1. manager 를 외부에서 접근하지 못하도록 막거나
2. 앞단에 proxy 른 둔다던지
3. 접근 시도 아이피를 막아준다던지

이 방법중에 나는 일단은 3번을 택했다. (어차피 테스트 서버라..)

Tomcat 의 conf/server.xml 파일을 열어서

해당 인스턴스의 host 설정 부분을 찾아가서

<Host></Host> 사이에

를 추가 해주면 되고 아이피 란에 여러개의 아이피를 등록하고 싶으면 | 로 구분 하도록 하면 되고
대역으로 막으려면 121.12.34.* 이렇게 해주면 된다.

하지만 운영 서버라면 나중에는 해킹 시도하는 아이피가 늘어나면 | 구분자로 관리가 힘들어 지기 때문에
proxy 서버를 앞단에 두는것이 좋다.

Too many open files 해결하기

IO 관련해서 개발을 하다보면 자주 마주치는 부분중 하나가 이 오류일 것이다.

java.io.IOException: Too many open files

일단 해당 메시지로 구글 검색을 하면 대부분 해결책이

“시스템의 open files 를 올려라 리눅스의 경우 ulimit -n 65535” 이정도 및 limit.conf 파일 수정 하는 것이
나오는 것이 대부분 일것이다.

하지만 그전에 프로그램에서 뭔가 파일을 열고 닫는 부분에서 버그가 있어야 하지 않을까? 라는 것으로 접근하는 것이
가장 우선시 되어야 할 사항 이라고 생각한다.

일단 이렇게 접근 하기 위해서는 프로그램이 실행이 될때 (어떠한 액션이 발생할때) 지금 열린 파일의 갯수를 알아야 할것이 아닌가?

os 가 linux 라고 가정 할때 대상 프로세스에서 열린 파일의 수를 실시간으로 확인이 가능한 간단한 스크립트를 소개하겠다.

가령 대상 프로세스가 java 프로세스라고 가정하면

shell # ps aux | grep java

해당 프로세스 리스트를 확인하면

아래와 같이 593228 라는 프로세스 아이디가 나온다.

그러면 아래처럼 linux shell 상에서 명령어를 실행하면…

라고 실행하면 2초 단위로 해당 프로세스에서 열린 파일의 갯수가 출력되니 디버깅에 참고하기 바란다.