728x90
반응형

★ 코어 덤프

☆ 코어 덤프 활성화 조회

ulimit -c

☆ 코어 덤프 활성화 조치
 vi /etc/security/limits.conf

 # 모든 사용자에 대해 core file size를 무제한으로 설정
 * soft core unlimited
 * hard core unlimited

저장, 로그아웃, 로그인, 재확인(조회)

☆ 임의로 덤핑
vi InfiniteLoop.java

public class InfiniteLoop {
    public static void main(String[] args) {
        while (true) {
            System.out.println("무한 루프 도는 중...");
            try {
                Thread.sleep(1000);  // 1초 대기 (Optional)
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

kill -11 <pid>

☆ 코어 파일의 경로 및 파일명 조회

cat /proc/sys/kernel/core_pattern

☆ 코어 파일의 경로 및 파일명 설정(임시)

echo "/tmp/core.%e.%p.%h.%t" | sudo tee /proc/sys/kernel/core_pattern

☆ 코어 파일의 경로 및 파일명 설정(영구)

vi /etc/sysctl.conf

kernel.core_pattern = /tmp/core.%e.%p.%h.%t

sudo sysctl -p


★ 파일 디스크립터
☆ 파일 디스크립터 누수 진단 ( 파일은 삭제되었지만 프로세스가 여전히 열고 있을 때, 파일/네트워크소켓/파이트 등)

lsof | grep deleted


☆ 특정 사용자에 의해 열린 파일 나열

lsof -u <username>


☆ 특정 사용자에 의해 열린 파일 개수 파악

#!/bin/bash

USERNAME=$1
USER_UID=$(id -u $USERNAME)
FILE_COUNT=0

for PID in $(ls /proc | grep -E '^[0-9]+$'); do
    PROC_UID=$(stat -c '%u' /proc/$PID 2>/dev/null)
    if [ "$PROC_UID" -eq "$USER_UID" ]; then
        COUNT=$(ls /proc/$PID/fd 2>/dev/null | wc -l)
        FILE_COUNT=$((FILE_COUNT + COUNT))
    fi
done
echo "Total open files by user $USERNAME: $FILE_COUNT"



☆ 특정 프로세스의 열린 파일 디스크립터 수 확인

ls /proc/<PID>/fd | wc -l

lsof -p <PID>


☆ 모든 프로세스의 열린 파일 디스크립터 수 확인

#!/bin/bash
for pid in /proc/[0-9]*; do
    echo -n "$pid: "
    ls "$pid/fd" 2>/dev/null | wc -l
done


lsof | awk '{print $2}' | sort | uniq -c | sort -nr


☆ 파일 디스크립터 한도 조회

ulimit -n 

☆ 파일 디스크립터 한도 조정 

vi /etc/security/limits.conf

* soft nofile 65536
* hard nofile 100000

저장, 로그아웃, 로그인, 재확인 


★ 힙 메모리

☆ 힙메모리 요약 출력

jmap -heap <PID>


☆ JVM 프로세스 ID 확인

jps -l

☆ JVM의 가비지컬렉션(GC)통계를 모니터링

jstat -gc <PID>


☆ GC 로그 활성화

-Xlog:gc*:file=gc.log:time,uptime









 

 

 

728x90
반응형

+ Recent posts