본문 바로가기
카테고리 없음

Rocky Linux 9 통합 서버 최적화 세팅

by 씨엔아이소프트 2026. 6. 16.
반응형

Rocky Linux 9 통합 서버 최적화 세팅

1단계: OS 커널 및 시스템 한도 해제 (트래픽 병목 제거)

100만 단위의 파일 오픈을 허용하고 네트워크 대기열을 확장합니다.

1. 커널 및 네트워크 튜닝

Bash
 
sudo vi /etc/sysctl.conf
Ini, TOML
 
# 파일 하단에 추가
fs.file-max = 2097152
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.ip_local_port_range = 1024 65535
Bash
 
# 적용
sudo sysctl -p

2. 사용자 파일 제한 해제

Bash
 
sudo vi /etc/security/limits.conf
Ini, TOML
 
# 파일 하단에 추가
* soft nofile 1048576
* hard nofile 1048576
root soft nofile 1048576
root hard nofile 1048576

3. Systemd 데몬 파일 제한 해제 (가장 중요)

Bash
 
sudo vi /etc/systemd/system.conf
Ini, TOML
 
# 주석 해제 및 수정
DefaultLimitNOFILE=1048576:1048576
Bash
 
# 시스템 데몬 새로고침
sudo systemctl daemon-reload

2단계: Apache Event MPM 세팅 (4096명 동시 방어)

가벼운 스레드로 정적 트래픽을 처리합니다.

Bash
 
sudo vi /etc/httpd/conf.modules.d/00-mpm.conf
Apache
 
# mpm_event_module 섹션을 아래 내용으로 교체
<IfModule mpm_event_module>
   StartServers               8
   ServerLimit               64
   MaxRequestWorkers       4096
   MinSpareThreads          256
   MaxSpareThreads          512
   ThreadsPerChild           64
   MaxConnectionsPerChild 10000
   AsyncRequestWorkerFactor   2
</IfModule>

3단계: PHP-FPM 8.0 & OPcache 세팅 (메모리 극대화)

1. PHP-FPM 풀(Pool) 설정

Bash
 
sudo vi /etc/php-fpm.d/www.conf
Ini, TOML
 
; 동적 할당 및 프로세스 튜닝
pm = dynamic
pm.max_children = 240
pm.start_servers = 60
pm.min_spare_servers = 60
pm.max_spare_servers = 180
pm.max_requests = 1000
pm.process_idle_timeout = 30s

; [파일 맨 아래 추가] Oracle 연동 환경 변수
env[LD_LIBRARY_PATH] = /usr/lib/oracle/21/client64/lib
env[ORACLE_HOME] = /usr/lib/oracle/21/client64
env[NLS_LANG] = KOREAN_KOREA.AL32UTF8

2. OPcache 엔진 튜닝

Bash
 
sudo vi /etc/php.d/10-opcache.ini
Ini, TOML
 
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=20000
opcache.revalidate_freq=2
opcache.validate_timestamps=1
opcache.save_comments=1

4단계: MariaDB 10.5 세팅 (16GB 중 3GB 할당)

Bash
 
sudo vi /etc/my.cnf.d/mariadb-server.cnf
Ini, TOML
 
# [mysqld] 섹션에 아래 내용 추가 또는 병합
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
skip-name-resolve = 1

max_connections = 300
wait_timeout = 600
interactive_timeout = 600
thread_cache_size = 64

tmp_table_size = 128M
max_heap_table_size = 128M

innodb_buffer_pool_size = 3G
innodb_buffer_pool_instances = 3
innodb_flush_method = O_DIRECT
innodb_log_file_size = 512M
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2

5단계: Oracle 21c Client & oci8 모듈 수동 컴파일 (DTrace 우회)

1. Oracle 클라이언트 설치

Bash
 
cd /tmp
wget https://download.oracle.com/otn_software/linux/instantclient/2112000/oracle-instantclient-basic-21.12.0.0.0-1.el8.x86_64.rpm
wget https://download.oracle.com/otn_software/linux/instantclient/2112000/oracle-instantclient-devel-21.12.0.0.0-1.el8.x86_64.rpm
sudo dnf localinstall -y oracle-instantclient-*.rpm
sudo sh -c "echo /usr/lib/oracle/21/client64/lib > /etc/ld.so.conf.d/oracle-instantclient.conf"
sudo ldconfig

2. oci8 모듈 수동 빌드 (안전 패치 포함)

Bash
 
sudo dnf install -y php-pear php-devel gcc make systemtap-sdt-devel
cd /usr/local/src
wget https://pecl.php.net/get/oci8-3.0.1.tgz
tar -zxf oci8-3.0.1.tgz
cd oci8-3.0.1
phpize
./configure --with-oci8=instantclient,/usr/lib/oracle/21/client64/lib

# DTrace 에러 강제 무력화 패치
sed -i 's/HAVE_OCI8_DTRACE/DISABLE_OCI8_DTRACE/g' *.c *.h

make
sudo make install

3. PHP에 oci8 모듈 등록

Bash
 
echo "extension=oci8.so" | sudo tee /etc/php.d/20-oci8.ini

6단계: 최종 적용 및 상태 확인

모든 서비스 일괄 재시작

Bash
 
sudo systemctl restart httpd
sudo systemctl restart mariadb
sudo systemctl restart php-fpm

상태 검증 명령어 모음

Bash
 
# 파일 오픈 리밋 정상 적용 확인 (1048576)
ulimit -n

# PHP 모듈 및 OPcache 로드 확인
php -m | grep -i oci
php -v

# 프로세스 구동 상태 확인
systemctl status httpd mariadb php-fpm
반응형

댓글