728x90
반응형
728x90
반응형

Connection Timeout

  • 클라이언트가 서버측으로 connection을 맺길 원하지만 서버의 장애 상황으로 connection조차 맺어지지 못할 때 발생하는 timeout이다.

Read Timeout

  • 클라이언트와 서버가 connection은 맺어졌지만 I/O작업이 길어지거나 락이 걸려 요청이 처리되지 못하고 있을 때 클라이언트는 더 이상 기다리지 못하고 커넥션을 끊는다. 즉, 응답을 기다리지 못하는 것이다. 이런 상황을 Read Timeout 이라고 하는데 java에서는 SocketTimeout Exception이 떨어진다.

JDBC Driver SocketTimeout은 OS의 SocketTimeout 설정에 영향을 받는다. JDBC Driver SocketTimeout을 설정하지 않아도 네트워크 장애 발생 이후 30분이 지나면 JDBC Connection Hang이 복구되는 것은 OS의 SocketTimeout 설정때문이다.

Write Timeout

  • 클라이언트가 서버로 패킷을 보낼 수 있는 timeout을 설정할 수 있다. 클라이언트와 서버가 connection은 맺어졌지만 설정된 timeout의 값 보다 데이터를 보내는(요청) 시간이 길어지면 Write Timeout이 발생하여 Exception이 떨어진다.

Statement Timeout

  • 네트워크 연결 장애에 대한 timeout을 담당하는 것이 아니다.
  • Statement 하나가 얼마나 오래 수행되어도 괜찮은지에 대한 한계 값이다. JDBC API인 Statement에 타임아웃 값을 설정하며, 이 값을 바탕으로 JDBC 드라이버가 StatementTimeout을 처리한다. JDBC API인 java.sql.Statement.setQueryTimeout(int timeout) 메서드로 설정한다.

네트워크 장애에 대비하는 타임아웃은 JDBC Driver SoecketTimeout이 처리해야 한다.

Transaction Timeout

  • 프레임워크나 애플리케이션 레벨에서 유효한 타임아웃이다.
  • 간단히 설명하면 "StatementTimeout x N(Statement 수행 수) + α(가비지 컬렉션 및 기타)"라고 할 수 있다. 전체 Statement 수행 시간을 허용할 수 있는 최대 시간 이내로 제한하려 할 때 TransactionTimeout을 사용한다.

Statement 한 개를 수행할 때 0.1초가 필요하다면, 몇 개 안 되는 Statement를 수행할 때에는 문제가 없다. 그러나 Statement 10만 개를 수행할 때에는 일만 초(약 7시간)가 필요하다. TransactionTimeout은 이런 경우에 사용할 수 있다.

JDBC Driver’s SocketTimeout

  • JDBC Driver Type4는 소켓을 사용하여 DBMS에 연결하는 방식이고, 애플리케이션과 DBMS 사이의 ConnectTimeout 처리는 DBMS에서 하지 않는다.
  • JDBC 드라이버의 SocketTimeout 값은 DBMS가 비정상으로 종료되었거나 네트워크 장애(기기 장애 등)가 발생했을 때 필요한 값이다. TCP/IP의 구조상 소켓에는 네트워크의 장애를 감지할 수 있는 방법이 없다. 그렇기 때문에 애플리케이션은 DBMS와의 연결 끊김을 알 수 없다. 이럴 때 SocketTimeout이 설정되어 있지 않다면 애플리케이션은 DBMS로부터의 결과를 무한정 기다릴 수도 있다(이러한 Connection을 Dead Connection이라고 부르기도 한다). 이러한 상태를 방지하기 위해 소켓에 타임아웃을 설정해야 한다. SocketTimeout은 JDBC 드라이버에서 설정할 수 있다. SocketTimeout을 설정하면 네트워크 장애 발생 시 무한 대기 상황을 방지하여 장애 시간을 단축할 수 있다.

단, SocketTimeout 값을 Statement의 수행 시간 제한을 위해 사용하는 것은 바람직하지 않다. 그러므로 SocketTimeout 값은 StatementTimeout 값보다는 크게 설정해야 한다. SocketTimeout값이 StatementTimeout보다 작으면, SocketTimeout이 먼저 동작하므로 StatementTimeout 값은 의미가 없게 되어 동작하지 않는다.

  • SocketTimeout에는 아래 두 가지 옵션이 있고, 드라이버별로 설정 방법이 다르다.
    • Socket Connect 시 타임아웃(connectTimeout): Socket.connect(SocketAddress endpoint, int timeout) 메서드를 위한 제한 시간
    • Socket Read/Write의 타임아웃(socketTimeout): Socket.setSoTimeout(int timeout) 메서드를 위한 제한 시간

OS level socket timeout 설정

  • SocketTimeout이나 ConnectTimeout을 설정하지 않으면 네트워크 장애가 발생해도 애플리케이션이 대부분 이를 감지할 수 없다. 따라서 연결이 되거나 데이터를 읽을 수 있을 때까지 애플리케이션이 무한정 기다리게 된다. 그러나 서비스에서 발생한 실재 장애 상황에서는 30분 후에 애플리케이션(WAS)이 재연결을 시도하여 문제가 해결되는 경우가 많다. OS에서도 SocketTimeout 시간을 설정할 수 있기 때문이다. 해당 설정 값을 통해 OS 레벨에서 네트워크 연결 끊김을 확인하는 것이다. 만약 리눅스 서버의 KeepAlive 체크 수행 주기가 30분이면 SocketTimeout 설정을 0으로 해도 네트워크 장애로 인한 DBMS 연결 장애 지속 시간이 30분을 넘지 않는 것이다. Linux 서버에서 KeepAlive 체크 수행 주기는 tcp_keepalive_time로 조정할 수 있다.

 

커넥션 타임아웃에 대해 정리가 잘되어있어 공유합니다.

 

출처

- effectivesquid.tistory.com/entry/Timeout%EC%97%90-%EA%B4%80%ED%95%9C-%EC%A0%95%EB%A6%AC

728x90
반응형
728x90
반응형

IE <area> 이미지맵으로 마우스 커서를 hand 표시하는 방법에 대해 알아보겠습니다.
style="cursor:pointer" 로 하면 될 줄 알았지만 설정해도 변경되지 않네요..
방법은 간단합니다.

area내 아래 소스만 추가해주시면 됩니다.

onmouseover="document.body.style.cursor='pointer';" onmouseout="document.body.style.cursor='default';"/>

 

<area onmouseover="document.body.style.cursor='pointer';" onmouseout="document.body.style.cursor='default';"/>

추가로 페이지를 이동하고 싶다면 href="" or onclick="" 을 사용하면 됩니다.

 

 

728x90
반응형
728x90
반응형

input text에서 한글 또는 영어로 디폴트 설정하고 싶을때가 있습니다.

input text창에 스타일 태그만 추가해주면 됩니다.

// 한글/영문
<input type='text' style="ime-mode:auto;">   

// 영문만
<input type='text' style="ime-mode:disabled;">

// 한글 (한글 / 영문 입력가능)
<input type='text' style="ime-mode:active;">

// 영문(한글 / 영문 입력가능)
<input type='text' style="ime-mode:inactive;">


728x90
반응형
728x90
반응형

톰캣 로그파일인 catalina.out 로그 초기화하는 방법에 대해 알아보겠습니다.

로그 파일을 초기화하는 이유는 용량 때문이죠.

로그 파일로 인해 디스크가 풀이 난다면 서비스 다운의 사유가 될 수 있습니다.

카탈리나 로그 초기화하는 방법에 대해 알아보겠습니다.

 

리눅스의 경우 크론 파일 등록하여 매일 12시에 로그를 삭제하도록 하는 명령어입니다.

 

1. 카탈리나 로그 초기화 명령어

cat /dev/null > /톰캣위치/apache-tomcat-xxx/logs/catalina.out

 

2. 쉘 파일 생성

 초기화 명령어 입력후 아래와 같이 쉘 파일 생성.

 : 서비스명_catalina_log_init.sh 

 

3. 크론(Cron), 스케줄러 등록

 : 0 1 * * * /생성한 쉘파일 위치/서비스명_catalina_log_init.sh  

 -> 매일 12시에 초기화를 하겠다는 크론 명령어

 

4. 등록된 크론 확인

  : crontab -l

단순 카탈리나 로그파일만 초기화 하고 싶다면 

2,3,4번은 생략하고 톰캣위치로 이동하여 해당 명령어를 입력하면 됩니다.

cat /dev/null > /톰캣위치/apache-tomcat-xxx/logs/catalina.out

728x90
반응형
728x90
반응형

이클립스 SVN으로 작업한 내용을 commit하려고 할 때 is out of date 오류가 발생하였습니다.

원인은 같이 파일을 작업하는 개발자의 커밋된 파일을 커밋받지 않아 발생한 오류입니다.

해결 방법은 간단합니다.

상위버전으로 업데이트 후 커밋해주시면 됩니다.

1) team -> Update to Version

2) Ok

 

728x90
반응형
728x90
반응형

흔히 압축 파일은 zip을 많이 사용하고 있습니다.

업무중에 7z의 압축형태의 파일을 받아보는 경우가 있을 겁니다.

7z 전용 프로그램이 있습니다. 7-zip 프로그램을 사용해 압축 해제 해주면 됩니다.

 

1. 아래 URL 접속

www.7-zip.org/

 

7-Zip

7-Zip 7-Zip is a file archiver with a high compression ratio. Download 7-Zip 19.00 (2019-02-21) for Windows: Link Type Windows Size Download .exe 32-bit x86 1.2 MB Download .exe 64-bit x64 1.4 MB Download 7-Zip 21.01 alpha (2021-03-09) for Windows: Link Ty

www.7-zip.org

2. os버전에 맞는 파일 다운로드

2. 7z1900-x64.exe 파일 실행하여 설치합니다.

3. 7z파일 우클릭하여 해제하면 됩니다.

 

728x90
반응형
728x90
반응형

개발하면서 서비스 장애로 인해 덤프 파일을 분석해야할 일이 있습니다.

덤프 파일 생성 후 분석하는 방법에 대해 간단히 알아보겠습니다.

 

0. 프로세스 pid 조회하기

 : ps -ef | grep java

 : 실행중인 자바 프로세스 확인하는 명령어

 

1. 힙 덤프 (Heap dump)

 : 덤프 파일의 확장자는 .hprof

 jmap -dump:format=b,file=[덤프파일이름]_dump.hprof pid

 

힙덤프 분석 tool - Eclipse Memory Analyzer (MAT)

1) Eclipse Memory Analyzer (MAT) 다운받기

 : www.eclipse.org/mat/downloads.php

 

Eclipse Memory Analyzer Open Source Project | The Eclipse Foundation

The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 375 open source projects, including runtimes, tools and frameworks.

www.eclipse.org

 : OS버전에 맞게 다운

 

2) 사용법

 : spoqa.github.io/2012/02/06/eclipse-mat.html

 

Eclipse Memory Analyzer 소개

Eclipse Memory Analyzer(MAT)을 소개하고 유용하게 쓸 수 있는 기능들을 알아봅니다.

spoqa.github.io

2.  스레드덤프 (Thread dump)

 jstack -l pid >> [덤프파일이름]_thread_dump.log

 

2-1)스레드덤프 분석 사이트

fastthread.io/ft-index.jsp

 

fastthread.io

Thread Dump Analysis REST API In this modern world, thread dumps are still analyzed in a tedious & manual mode. i.e., Operations engineer captures thread dumps from the production servers; then he transmits those files to developers. Developers use thread

fastthread.io

3. 프로세스 스택 (pstack)

pstack은 프로세스의 스택 정보를 보여주는 명령어입니다.

쓰레드의 상태를 확인하는 용도로 사용합니다.

pstack $pid >> [프로세스스택명]_pstack.txt

728x90
반응형
728x90
반응형

회사에서 아웃룩 많이들 사용하고 계시죠.

와이파이 또는 핫스팟으로 연결된 환경에서 위와 같은 메세지가 발생한다고 합니다.

아웃룩 네트워크 요금제 경고 메세지 해결하는 방법에 대해 알아보겠습니다.

1. 설정 -> 네트워크 및 인터넷 클릭

2. 이더넷 -> 연결된 인터넷 클릭

3. 데이터 통신 연결로 설정 끔

 

참고URL

answers.microsoft.com/ko-kr/msoffice/forum/msoffice_outlook-mso_windows8-mso_2016/outlook-%EC%8B%9C%EC%9E%91%EC%8B%9C/a67f324f-b21e-419e-a1f4-7cef7addfcf5

728x90
반응형
728x90
반응형

+ Recent posts