MariaDB와 Tomcat 서버가 한 대의 서버에서 함께 동작하는 환경에서, 성능 최적화하여 효율적인 자원 관리와 성능 향상을 위한 각종 설정을 소개합니다.
작업 서버 정보
- 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와 주요 메모리 파라미터 튜닝
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 정도로 설정해 InnoDB와 OS를 위한 충분한 메모리 여유를 확보합니다.
- 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는 기본적으로 시스템 메모리를 잘 관리하지만, 파일 캐싱을 제한하거나, 비주얼 이펙트를 조정하는 등 추가적인 최적화를 할 수 있습니다.
- 파일 캐싱 제한: MariaDB나 Tomcat과 같은 프로세스가 메모리를 우선적으로 사용할 수 있도록, 파일 시스템 캐싱을 제한합니다.
- 레지스트리에서 다음 경로 확인
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
- LargeSystemCache 값을 0으로 설정하여 파일 시스템 캐싱을 제한합니다.
- 레지스트리에서 다음 경로 확인
- 비주얼 이펙트 조정: Windows 성능 옵션에서 최상의 성능으로 조정하여 GUI 관련 메모리 사용을 줄일 수 있습니다.
- 설정 > 성능 > 시각 효과에서 최상의 성능으로 설정을 선택합니다.
- 설정 > 성능 > 시각 효과에서 최상의 성능으로 설정을 선택합니다.
'OS > Windows' 카테고리의 다른 글
Windows - Hyper-V 설치 오류 : BIOS에서 가상화 활성화하기 (2) | 2024.11.15 |
---|---|
Windows - PC 부팅 일자 확인 및 자동 종료 설정하기 (batch 이용) (8) | 2024.11.07 |
Windows - Hyper-V 가상 디스크 삭제 시 "액세스가 거부되었습니다" 오류 해결 방법 (0) | 2024.09.26 |
Windows - ODBC 설정 백업 및 복원 방법 (0) | 2024.07.18 |
Windows - 응용프로그램 비정상 종료 시 오류 메시지 표시 비활성화 (0) | 2024.05.16 |