반응형

시스템에서 타임존이 맞지 않을 때 강제로 설정하는 방법


+시간 타임존 timezone 문제

CentOS

1. 시스템 및 DB 시간
cp /usr/share/zoneinfo/Asia/Seoul /etc/localtime

# date()
=>KST

DB>select @@system_time_zone;
=>System time zone : KST

2. Tomcat 시간 설정
/etc/init.d/tomcat7 스크립트에 아래 내용 추가
export JAVA_OPTS="-Duser.timezone=GMT+09:00"

catalina.sh에 아래 추가
JAVA_OPTS="$JAVA_OPTS -Duser.timezone=GMT+09:00"



반응형


+tomcat의 구동 스크립트에 환경변수를 추가하여 java 메모리튜닝 및 외부 라이브러리 경로 설정을 한다.


구동 스크립트 경로: /usr/tomcat7/bin/catalina.sh

위 스크립트 가장 앞 부분에 추가한다.
보통 외부 라이브러리 경로는 /usr/local/lib에 추가한다. 그곳에 *.so 동적 라이브러리들을 추가하고 아래와 같이 LD_LIBRFARY_PATH에 추가해 준다.

#!/bin/sh

export LD_LIBRARY_PATH=.:/usr/lib/oracle/12.1/client64/lib:/usr/lib:/usr/local/lib
export CLASSPATH=/usr/java/latest/jre/lib/ext:/usr/java/latest/lib/tools.jar
JAVA_OPTS="-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2 -Djava.library.path=/usr/local/lib -Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:+DisableExplicitGC"

export TOMCAT_HOME=/usr/tomcat7
export CATALINA_HOME=/usr/tomcat7
export CATALINA_BASE=/usr/tomcat7
export CATALINA_PID=/usr/tomcat7/bin/tomcat.pid




+ 톰캣 튜닝
# vi /usr/tomcat/conf/server.xml


connectionTimeout="5000" 
     타임아웃으로 기본 60초 (60000) 이다. 10초이내 권장
maxThreads="100"
     tomcat의 최대 쓰레드 수. 최대 접속 가능한 active user수
acceptCount="100"
     tomcat thread full일 경우 대기 queue의 길이
disableUploadTimeout="true"
     데이터 업로드 할 때 사이즈가 크면 timeout이 걸릴수 있음. 이를 방지.
maxConnection="8192"
     tomcat이 유지하는 최대 접속 수.
     


-listner 설정
루트 계정으로 실행 못하게 막기
 <Listener className="org.apache.catalina.security.SecurityListener" checkedOsUsers="root" /> 

-Connector 설정
protocol="org.apache.coyote.http11.Http11Protocol"
acceptCount="10"
enableLookups="false"
compression="off"
maxConnection="8192"
maxKeepAliveRequest="1"
maxThread="100"
tcpNoDelay="true"

예)
<Connector port="8080" address="localhost" maxThreads="250" maxHttpHeaderSize="8192" emptySessionPath="true" protocol="HTTP/1.1" enableLookups="false" redirectPort="8181" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />


       <Connector port="8443" protocol="HTTP/1.1"
                SSLEnabled="true" scheme="https" secure="true"
                clientAuth="false" sslProtocol="TLS"
                keystoreFile="/var/www/tomcat.keystore" keystorePass="패스워드"
                URIEncoding="UTF-8"
                maxThreads="250" maxHttpHeaderSize="8192"
                enableLookups="false" acceptCount="100" connectionTimeout="20000"
                disableUploadTimeout="true" 
     compression="off"
     tcpNoDelay="true"
/>


+JVM 튜닝
vi $CATALINA_HOME/bin/catalina.sh
첫 줄에 JAVA_OPTS 추가.
-Xmx1024m –Xms1024m -XX:MaxNewSize=384m -XX:MaxPermSize=128m

메모리 부족시 덤프를 뜨게하여 추적할 수 있다.
-XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./java_pid<pid>.hprof
-XX:ParallelGCThreads=2 -XX:-UseConcMarkSweepGC

예)
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:+DisableExplicitGC"



+++ OS 튜닝 필요

+ 사용자 최대 파일(소켓 포함) 오픈 개수
ulimit -a로 확인 가능
소켓도 파일 이므로 최대 사용 개수가 제한된다....

:변경 방법
#sysctl -w fs.file-max=372738

아래도 작업
#vi /etc/sysctl.conf
fs.file-max=372738

#sysctl -p

; 변경 확인
sysctl fs.file-max
or
cat /proc/sys/fs/file-max

-최대 파일 오픈 개수 확인 ; ulimit -a
open files ; 1024
>변경방법
#vi /etc/security/limits.conf
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
; xxxx는 65535 등...
ulimit -a 로 확인

-backlog 최대값 ; sys/socket.h
SOMAXCONN 값을 참조
>변경 방법
sysctl -a | grep somaxconn     ; 확인
sysctl -w net.core.somaxconn=2048



'Develop > Java' 카테고리의 다른 글

tomcat 프로세스 모니터링. 죽으면 다시 시작  (0) 2018.03.06
CentOS, tomcat 타임존 문제  (2) 2018.03.06
jqGrid(2) row(줄) 색상 변경/값 변경  (0) 2016.01.22
jqGrid (1)  (0) 2016.01.19
한글 인코딩 UTF8  (0) 2015.06.02
반응형

리눅스에서 간단히 OpenSSL로 암복호화 테스트하기


+인코딩

-base64 인코딩하기.

echo "this is a test" | openssl enc -base64

-base64 디코딩하기

echo "dGhpcyBpcyBhIHRlc3QK" | openssl enc -d -base64
this is a test

echo "dGhpcyBpcyBhIHRlc3QK" | openssl enc -base64 -d

this is a test



+ AES 256 암복호화

echo "this is a test" | openssl enc -aes-256-cbc -a

암호키 입력

출력은 base64 인코딩형태 (커맨드 마지막에 -a를 빼면 바이너리로 출력하므로 파일 리다이렉션> 으로 파일로 저장할 수도 있다.)


echo "base64 암호화값" | openssl enc -aes-256-cbc -d -a

암호키 입력


+기타 옵션

-in ; 입력 파일

-out ; 출력 파일

-a ; base64 인코딩하여 출력

-k ; 패스워드 (암복호화시 생략하면 프롬프트상에서 물어본다.)



+파일 암복호화 

$ openssl enc -aes-256-cbc -salt -a -in file.txt -k school -out file.txt.enc

$ cat file.txt.enc

U2FsdGVkX19VTO6a11weGV665ZPM3sGKpZadud21IEw=


$ openssl enc -aes-256-cbc -d -a -in file.txt.enc -out file.dec

enter aes-256-cbc decryption password:

$ cat file.dec

hello

(-a를 빼면 바이너리로 데이터 생성, -k 로 패스워드 지정가능.)




+ 해시 테스트

MD5 해시값을 생성한다. 파라미터로 파일명을 주면 파일을 읽어 해시값을 생성하고, echo로 출력한 것을 pipe로 받아 해시값을 생성할 수 도 있다. 

$ openssl md5 filename

$ echo "hello" | openssl md5

주의! echo로 출력시에는 마지막에 \n이 자동으로 들어간다.

이를 막으려면 -n 옵션을 echo에 추가해 주어야 한다.


$ openssl sha1 filename

$ openssl sha256 filename








'Security' 카테고리의 다른 글

DLKM 방식의 후킹 모듈 보호 메커니즘  (1) 2015.06.07
버퍼오버런(Buffer-Overrun)의 실체와 분석  (0) 2015.06.06
해시(Hash)  (1) 2015.06.02

+ Recent posts