본문 바로가기

OS/Windows

Windows - DB / WAS / OS 튜닝 가이드

728x90

MariaDBTomcat 서버가 한 대의 서버에서 함께 동작하는 환경에서, 성능 최적화하여 효율적인 자원 관리와 성능 향상을 위한 각종 설정을 소개합니다.

작업 서버 정보

  • OS : Windows 2022 서버 기준
  • DB: MariaDB 10.6.16 기준
  • WAS: Apache Tomcat 8.5 기준 (JAVA 17 사용)

1. MariaDB 튜닝 (DB) 설정

1.1 my.ini 설정

MariaDB는 메모리 사용량쿼리 성능에 큰 영향을 미치는 DB 엔진입니다.

특히, InnoDB의 버퍼 풀로그 파일 크기 설정은 성능에 큰 차이를 만들기 때문에 적당히 할당해주셔야 합니다.

 

[mysqld]
# 데이터베이스 경로 및 포트 설정
datadir=D:/MariaDB/data
port=3306

# 메모리 및 캐시 관련 설정 (전체 메모리 60~70% 할당)
innodb_buffer_pool_size=10240M  # 약 10GB 할당
innodb_buffer_pool_instances=8  # 버퍼 풀 인스턴스 수
innodb_log_file_size=512M       # 로그 파일 크기
innodb_log_buffer_size=16M      # 로그 버퍼 크기
innodb_flush_log_at_trx_commit=1  # 데이터 안정성 유지

# 연결 및 타임아웃 관련 설정
max_connections=2000            # 최대 연결 수
wait_timeout=600                # 비활성 연결 타임아웃 (초)
interactive_timeout=600         # 인터랙티브 연결 타임아웃 (초)

# 테이블 캐시 및 패킷 크기 설정
table_open_cache=2048           # 열려있는 테이블 캐시 수
max_allowed_packet=64M          # 최대 패킷 크기 설정

# 쿼리 및 로그 설정
log-bin=mysql-bin
binlog_format=mixed
max_binlog_size=1024M           # 바이너리 로그 파일 최대 크기
expire_logs_days=30             # 로그 파일 보관 기간 (30일)
slow_query_log=1                # 느린 쿼리 로그 활성화
long_query_time=10              # 느린 쿼리 기준 시간 (10초)

# 인코딩 및 정렬 설정
character-set-server=utf8       # 기본 문자셋 UTF-8
collation-server=utf8_general_ci  # 기본 정렬 방식

# 트랜잭션 격리 수준
transaction_isolation=READ-COMMITTED  # 트랜잭션 격리 수준

# 메모리 설정 (쿼리 및 버퍼)
tmp_table_size=128M             # 임시 테이블 크기
join_buffer_size=16M            # 조인 버퍼 크기
sort_buffer_size=16M            # 정렬 버퍼 크기
read_buffer_size=8M             # 읽기 버퍼 크기
read_rnd_buffer_size=16M        # 랜덤 읽기 버퍼 크기

# 기타 설정
skip-name-resolve               # DNS 이름 해석 비활성화
event_scheduler=ON              # 이벤트 스케줄러 활성화
innodb_file_per_table=ON        # 테이블당 파일 생성
lower_case_table_names=1        # 테이블명 대소문자 구분 비활성화

참고 자료 : [DB/Mysql(MariaDB)] - MariaDB - Connection Memory Management와 주요 메모리 파라미터 튜닝

 

MariaDB - Connection Memory Management와 주요 메모리 파라미터 튜닝

1. 튜닝이 왜 필요한가?MariaDB의 메모리 튜닝은 서버의 성능 최적화와 안정성 보장을 위해 필수적입니다. 성능 최적화 : 튜닝을 통해 적절하게 메모리를 사용하면 처리 속도가 빨라지고, 데이터

samso.tistory.com

 


2. Tomcat 튜닝 (WAS) 설정

Tomcat 서버는 JVM의 힙 메모리 관리와 가비지 컬렉션 설정에 따라 성능이 좌우됩니다. G1 GC적절한 메모리 할당을 통해 성능을 최적화할 수 있습니다.

2.1 Tomcat JVM 옵션

JAVA_OPTS에 다음과 같은 JVM 옵션을 추가하여 Tomcat 서버를 튜닝할 수 있습니다.

-Dfile.encoding=UTF-8
-Dfile.client.encoding=UTF-8
-Dclient.encoding.override=UTF-8
-XX:+UseG1GC                        # G1 가비지 컬렉터 사용
-Xms2048m                            # 최소 힙 메모리 2GB
-Xmx3072m                            # 최대 힙 메모리 3GB
-XX:MaxNewSize=512m                  # Young Generation 최대 크기 512MB
-XX:+PrintGCDetails                  # GC 상세 로그 출력
-XX:+PrintGCTimeStamps               # GC 타임스탬프 출력
-Djava.net.preferIPv4Stack=true       # IPv4 우선 사용

2.2 메모리 사용 조정

  • Tomcat 힙 메모리는 2~3GB 정도로 설정해 InnoDBOS를 위한 충분한 메모리 여유를 확보합니다.
  • G1 GC는 WAS에서 추천되는 가비지 컬렉터로, 큰 힙 메모리에서 성능을 최적화합니다.

3. Windows OS 튜닝

Windows Server 2022는 기본적으로 안정적인 성능을 제공하지만, 네트워크 설정과 메모리 관리에 대한 추가 튜닝이 필요할 수 있습니다. 특히 대규모 연결을 처리할 때 TCP 포트 범위메모리 관리가 중요합니다.

3.1 네트워크 설정: 동적 포트 범위 조정

대량의 연결을 효율적으로 처리하기 위해 동적 포트 범위를 늘릴 수 있습니다. 이는 netsh 명령어로 설정 가능합니다.

netsh int ipv4 set dynamicport tcp start=1025 num=60000
  • 설명: 1025 ~ 60000개의 동적 TCP 포트를 사용하도록 설정합니다. 이 설정은 다중 연결 처리를 개선할 수 있습니다.

3.2 Windows 메모리 관리 최적화

Windows Server는 기본적으로 시스템 메모리를 잘 관리하지만, 파일 캐싱을 제한하거나, 비주얼 이펙트를 조정하는 등 추가적인 최적화를 할 수 있습니다.

  1. 파일 캐싱 제한: MariaDB나 Tomcat과 같은 프로세스가 메모리를 우선적으로 사용할 수 있도록, 파일 시스템 캐싱을 제한합니다.
    • 레지스트리에서 다음 경로 확인
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
    • LargeSystemCache 값을 0으로 설정하여 파일 시스템 캐싱을 제한합니다.
  2. 비주얼 이펙트 조정: Windows 성능 옵션에서 최상의 성능으로 조정하여 GUI 관련 메모리 사용을 줄일 수 있습니다.
    • 설정 > 성능 > 시각 효과에서 최상의 성능으로 설정을 선택합니다.


 

 

 

728x90
반응형