운영 환경 서버 느려짐, 진단 사고방식 및 성능 평가

운영 환경 서버 느려짐, 진단 사고방식 및 성능 평가

  • 전체: top
  • CPU: vmstat
  • 메모리:free
  • 하드 드라이브: df 보기 디스크 남은 공간
  • 디스크 IO: iostat
  • 네트워크 IO: ifstat
  • CPU가 너무 높고 사고방식과 포지셔닝
  • 전체 시스템:top

    [root@tesm-jenkins-16-32 ~]# top
    top - 15:05:02 up 38 days, 22:30,  1 user,  load average: 0.00, 0.01, 0.05
    Tasks: 214 total,   2 running, 212 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :  8174712 total,  2022928 free,  2040060 used,  4111724 buff/cache
    KiB Swap:  8257532 total,  8233776 free,    23756 used.  5691080 avail Mem 
    
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                             
     1148 root      20   0  916512  11028   2004 S   0.3  0.1  43:25.68 docker-containe                                                                                                                                                     
     2369 root      20   0  157728   2336   1552 R   0.3  0.0   0:00.09 top                                                                                                                                                                 
        1 root      20   0  191184   3080   2060 S   0.0  0.0  10:21.62 systemd                                                                                                                                                             
        2 root      20   0       0      0      0 S   0.0  0.0   0:00.45 kthreadd                                                                                                                                                            
        3 root      20   0       0      0      0 S   0.0  0.0   0:00.16 ksoftirqd/0                                                                                                                                                         
        5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                                                                                                                                        
        7 root      rt   0       0      0      0 S   0.0  0.0   0:00.08 migration/0                                                                                                                                                         
        8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                                                                                                                                                              
        9 root      20   0       0      0      0 R   0.0  0.0   1:54.15 rcu_sched                                                                                                                                                           
       10 root      rt   0       0      0      0 S   0.0  0.0   0:10.07 watchdog/0                                                                                                                                                          
       11 root      rt   0       0      0      0 S   0.0  0.0   0:07.01 watchdog/1                                                                                                                                                          
       12 root      rt   0       0      0      0 S   0.0  0.0   0:00.07 migration/1                                                                                                                                                         
       13 root      20   0       0      0      0 S   0.0  0.0   0:00.15 ksoftirqd/1                                                                                                                                                         
       15 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H                                                                                                                                                        
       16 root      rt   0       0      0      0 S   0.0  0.0   0:06.91 watchdog/2                                                                                                                                                          
       17 root      rt   0       0      0      0 S   0.0  0.0   0:00.08 migration/2        
    

    주로%CPU,%MEM load average: 1분 5분 15분 평균 부하 값 보기 (3개 + 3 * 60% 이상 100%)

    CPU: vmstat

    [root@tesm-jenkins-16-32 ~]# vmstat -n 2 3
    procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
     1  0  23756 2024212      0 4111256    0    0     0     1    1    1  0  0 100  0  0
     0  0  23756 2024244      0 4111364    0    0     0     0  203  225  0  0 100  0  0
     0  0  23756 2024212      0 4111364    0    0     0     4  199  214  0  0 100  0  0
    

    일반적인 vmstat 도구의 사용은 두 개의 매개 변수를 통해 이루어진다. 첫 번째 매개 변수는 샘플링의 시간 간격수이고 단위는 초이다.두 번째 파라미터는 샘플링 횟수입니다.
  • procs
  • r: CPU 슬라이스를 실행하고 기다리는 프로세스 트리. 원칙적으로 1핵의 CPU 운행 대기열은 2를 초과하지 마라. 전체 시스템의 운행 대기열은 총 핵수의 2배를 초과해서는 안 된다. 그렇지 않으면 시스템의 압력이 너무 크다는 것을 의미한다.
  • b: 디스크 I/O, 네트워크 I/O 등 자원을 기다리는 프로세스 수
  • cpu
  • us: 사용자 프로세스가 CPU를 소모하는 시간 백분율, us값이 높고 사용자 프로세스가 CPU를 소모하는 시간이 많으며 장기적으로 50%보다 크면 프로그램을 최적화합니다.
  • sy: 코어 프로세스에 소요되는 CPU 시간 비율
  • id: 비어 있는 CPU 비율
  • wa: 시스템이 입출력을 기다리는 CPU 시간 백분율
  • st: 한 가상 컴퓨터에서 훔친 CPU 시간의 백분율 만약 us+sy 참고값이 80%라면 CPU 부족이 존재할 수 있음
  • 추가 명령: 모든 CPU 핵 정보 보기(2초당): mpstat -P ALL 2
    [root@tesm-jenkins-16-32 ~]# mpstat -P ALL 2
    Linux 3.10.0-693.21.1.el7.x86_64 (tesm-jenkins-16-32)   06/13/2019      _x86_64_        (8 CPU)
    
    03:21:27 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    03:21:29 PM  all    0.06    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.94
    03:21:29 PM    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    03:21:29 PM    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    03:21:29 PM    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    03:21:29 PM    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    03:21:29 PM    4    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    03:21:29 PM    5    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    03:21:29 PM    6    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    03:21:29 PM    7    0.50    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.50
    
    03:21:29 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    03:21:31 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    03:21:31 PM    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    03:21:31 PM    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    03:21:31 PM    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    03:21:31 PM    3    0.50    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.50
    03:21:31 PM    4    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    03:21:31 PM    5    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    03:21:31 PM    6    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    03:21:31 PM    7    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    

    프로세스당 CPU 핵 정보 사용(1초당): pidstat-u1 -p 프로세스 번호
    [root@tesm-jenkins-16-32 ~]# ps -ef | grep java
    jenkins   1214     1  0 May05 ?        01:04:00 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/opt/jenkins -jar /opt/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
    root      3250  2304  0 15:22 pts/0    00:00:00 grep --color=auto java
    [root@tesm-jenkins-16-32 ~]# pidstat -u 1 -p 1214
    Linux 3.10.0-693.21.1.el7.x86_64 (tesm-jenkins-16-32)   06/13/2019      _x86_64_        (8 CPU)
    
    03:22:52 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
    03:22:53 PM   997      1214    0.00    0.00    0.00    0.00     0  java
    03:22:54 PM   997      1214    0.00    0.00    0.00    0.00     0  java
    03:22:55 PM   997      1214    0.00    1.00    0.00    1.00     0  java
    03:22:56 PM   997      1214    0.00    0.00    0.00    0.00     0  java
    03:22:57 PM   997      1214    0.00    0.00    0.00    0.00     0  java
    03:22:58 PM   997      1214    0.00    0.00    0.00    0.00     0  java
    

    메모리:free


    free -m
    [root@tesm-jenkins-16-32 ~]# free -m 
                  total        used        free      shared  buff/cache   available
    Mem:           7983        1992        1974          56        4015        5557
    Swap:          8063          23        8040
    

    프로세스당 메모리 정보 사용(1초당):pidstat-r1-p 프로세스 번호
    [root@tesm-jenkins-16-32 ~]# pidstat -r 1 -p 1214
    Linux 3.10.0-693.21.1.el7.x86_64 (tesm-jenkins-16-32)   06/13/2019      _x86_64_        (8 CPU)
    
    03:29:53 PM   UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
    03:29:54 PM   997      1214      0.00      0.00 8033372 1636384  20.02  java
    03:29:55 PM   997      1214      0.00      0.00 8033372 1636384  20.02  java
    03:29:56 PM   997      1214      0.00      0.00 8033372 1636384  20.02  java
    03:29:57 PM   997      1214      0.00      0.00 8033372 1636384  20.02  java
    

    하드 드라이브:df 남은 디스크 보기


    df -h
    [root@tesm-jenkins-16-32 ~]# df -h
    Filesystem               Size  Used Avail Use% Mounted on
    /dev/mapper/centos-root   48G   24G   25G  50% /
    devtmpfs                 3.9G     0  3.9G   0% /dev
    tmpfs                    3.9G     0  3.9G   0% /dev/shm
    tmpfs                    3.9G   57M  3.9G   2% /run
    tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
    /dev/sda1               1014M  210M  805M  21% /boot
    /dev/mapper/centos-home   24G  8.4G   15G  36% /home
    tmpfs                    799M     0  799M   0% /run/user/0
    

    디스크 IO: iostat


    iostat -xdk 2 3
    [root@tesm-jenkins-16-32 ~]# iostat -xdk 2 3
    Linux 3.10.0-693.21.1.el7.x86_64 (tesm-jenkins-16-32)   06/13/2019      _x86_64_        (8 CPU)
    
    Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
    sda               0.00     0.02    0.05    0.32     1.03     9.55    57.10     0.00    7.22    5.69    7.48   0.54   0.02
    dm-0              0.00     0.00    0.05    0.33     1.01     9.54    54.79     0.00    9.12    5.58    9.67   0.48   0.02
    dm-1              0.00     0.00    0.00    0.00     0.00     0.01     8.39     0.00   51.80  178.42   13.19   5.43   0.00
    dm-2              0.00     0.00    0.00    0.00     0.02     0.00    19.97     0.00    1.22    1.77    0.15   1.20   0.00
    
    Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
    sda               0.00     0.00    0.50    0.00     4.00     0.00    16.00     0.01   24.00   24.00    0.00  24.00   1.20
    dm-0              0.00     0.00    0.50    0.00     4.00     0.00    16.00     0.01   24.00   24.00    0.00  24.00   1.20
    dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
    dm-2              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
    
    Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
    sda               0.00     0.00    0.00    1.00     0.00     4.00     8.00     0.00    0.00    0.00    0.00   0.00   0.00
    dm-0              0.00     0.00    0.00    1.00     0.00     4.00     8.00     0.00    0.00    0.00    0.00   0.00   0.00
    dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
    dm-2              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
    

    디스크 블록 장치 분포 상기 각 열의 의미는 다음과 같다. rrqm/s: 초당 이 장치에 대한 읽기 요청이 통합된 횟수,파일 시스템은 같은 블록(block)을 읽는 요청에 대해 wrqm/s를 통합합니다. 이 장치에 대한 쓰기 요청이 통합된 횟수 r/s: 1초에 완성된 읽기 횟수 w/s: 1초에 완성된 쓰기 횟수 rkB/s: 1초에 데이터를 읽는 횟수(kB 단위) wkB/s: 1초에 데이터를 쓰는 횟수(kB 단위) avgrq-sz: 평균 IO 작업 횟수(섹터 수)avgqu-sz: 평균 대기 처리된 IO 요청 대기열 길이 await: 평균 IO 요청 대기 시간 (대기 시간과 처리 시간 포함, 밀리초 단위)svctm: 평균 IO 요청 처리 시간 (밀리초 단위)%util: 주기적으로 IO 작업에 사용되는 시간 비율, 즉 IO 대기열이 비어 있지 않은 시간 비율 매개 변수에 중점을 둡니다.
    1. iowait% 는 CPU의 IO 대기 시간이 전체 CPU 주기의 백분율을 차지하고 iowait 값이 50%를 초과하거나%system,%user 및%idle보다 현저하게 크면 IO에 문제가 있을 수 있음을 나타낸다.
    2. avgqu-sz는 디스크 IO 대기열의 길이, 즉 IO 대기 개수를 나타낸다.
    3. await는 매번 IO 요청 대기 시간을 나타냅니다. 대기 시간과 처리 시간을 포함합니다.
    4,svctm는 매번 IO 요청 처리 시간을 나타낸다
    5,%util은 디스크가 바쁘다는 것을 나타냅니다. 일반적으로 이 값이 80%를 넘으면 디스크가 바쁜 상태에 있을 수 있습니다.rkB/s, wkB/s는 시스템 응용에 따라 서로 다른 값을 가진다. 우려 규칙은 장기적이고 초대형 데이터 읽기와 쓰기에 따라 정상적이지 않을 것이며 프로그램 읽기를 최적화해야 한다.svctm, await의 값은 매우 가깝다. 표지 거호는 I/O 대기가 없고 디스크의 성능이 좋다. 만약에 await의 값이svctm의 값보다 훨씬 높으면 I/O 대기열이 너무 길기 때문에 최적화 프로그램이나 디스크를 교체해야 한다.
    프로세스당 디스크 정보 사용(1초당): pidstat-d1 -p 프로세스 번호
    [root@tesm-jenkins-16-32 ~]# pidstat -d 1 -p 1214
    Linux 3.10.0-693.21.1.el7.x86_64 (tesm-jenkins-16-32)   06/13/2019      _x86_64_        (8 CPU)
    
    04:41:17 PM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
    04:41:18 PM   997      1214      0.00      0.00      0.00  java
    04:41:19 PM   997      1214      0.00      8.00      0.00  java
    04:41:20 PM   997      1214      0.00      0.00      0.00  java
    04:41:21 PM   997      1214      0.00      0.00      0.00  java
    04:41:22 PM   997      1214      0.00      0.00      0.00  java
    

    네트워크 IO: ifstat


    1. 원본 ifstatfind/-name ifstat을 마운트 해제하여/usr/sbin/ifstat,ifstat의 man 디렉터리를 제거합니다.gz 파일 삭제 2, 다운로드 설치 wgethttp://gael.roualland.free.fr/ifstat/ifstat-1.1.tar.gz tar xzvf ifstat-1.1.tar.gz cd ifstat-1.1 ./configure make make install cp ifstat/usr/sbin/
    [root@node3 ifstat-1.1]# ifstat 1
           eth0                eth1              docker0      
     KB/s in  KB/s out   KB/s in  KB/s out   KB/s in  KB/s out
        0.00      0.00     19.05   1377.84      0.00      0.00
        0.00      0.00     19.54   1388.09      0.00      0.00
        0.00      0.00     19.39   1282.41      0.00      0.00
        0.00      0.00     19.78   1392.49      0.00      0.00
        0.00      0.00     19.85   1403.73      0.00      0.00
        0.00      0.00     20.42   1383.93      0.00      0.00
        0.00      0.00     18.46   1278.94      0.00      0.00
        0.00      0.00     19.80   1399.47      0.00      0.00
        0.00      0.00     18.27   1271.58      0.00      0.00
        0.00      0.00     17.58   1268.47      0.00      0.00
        0.00      0.00     19.60   1392.27      0.00      0.00
        0.00      0.00     20.13   1393.69      0.00      0.00
        0.00      0.00     19.90   1386.89      0.00      0.00
        0.00      0.00     18.04   1277.04      0.00      0.00
        0.00      0.00     21.35   1513.58      0.00      0.00
        0.00      0.00     18.23   1283.19      0.00      0.00
        0.00      0.00     17.93   1275.76      0.00      0.00
    

    각 네트워크 카드의 in, out, 네트워크 부하 상황, 프로그램 네트워크 읽기와 쓰기가 정상인지 관찰 – 프로그램 네트워크 I/O 최적화 – 네트워크 I/O 광대역 증가

    CPU가 너무 높고, 사고방식과 포지셔닝

  • 먼저 top 명령으로 CPU가 가장 높은 것을 찾아낸다
  • top - 09:11:37 up 21 min,  3 users,  load average: 0.54, 0.25, 0.16
    Tasks:  94 total,   1 running,  93 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  3.0 us,  6.4 sy,  0.0 ni, 89.3 id,  0.0 wa,  0.0 hi,  1.3 si,  0.0 st
    KiB Mem :   499428 total,    81452 free,   131984 used,   285992 buff/cache
    KiB Swap:  1572860 total,  1572860 free,        0 used.   325184 avail Mem 
    
      PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                                                                                              
     2485 root      20   0 2024360  25616  12256 S  8.6  5.1   0:08.54 java                                                                                                                                                                 
     2436 root      20   0  154608   5500   4132 S  1.3  1.1   0:01.50 sshd                                                                                                                                                                 
      580 root      20   0  376240   9256   6804 S  0.3  1.9   0:00.20 NetworkManager                                                                                                                                                       
     1331 root      20   0       0      0      0 S  0.3  0.0   0:00.41 kworker/0:1                                                                                                                                                          
        1 root      20   0  128036   6604   4144 S  0.0  1.3   0:01.48 systemd                                                                                                                                                              
        2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd                                                                                                                                                             
        3 root      20   0       0      0      0 S  0.0  0.0   0:00.08 ksoftirqd/0                                                                                                                                                          
        5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H                                                                                                                                                         
        6 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kworker/u2:0                                                                                                                                                         
        7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0                                                                                                                                                          
        8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh                                                                                                                                                               
        9 root      20   0       0      0      0 S  0.0  0.0   0:00.53 rcu_sched       
    
  • ps-ef 또는 jps를 한층 더 포지셔닝하여 어떤 백엔드 프로그램이 우리에게 문제를 일으키는지 알게 되었다
  • [root@node3 ~]# jps -l
    2516 sun.tools.jps.Jps
    2485 com.wu.pratice.jvm.UnableCreateNewThreadDemo
    1413 -- process information unavailable
    7162 -- process information unavailable
    [root@node3 ~]# ps -ef | grep java
    root      2485  2440  8 09:09 pts/2    00:00:26 java com.wu.pratice.jvm.UnableCreateNewThreadDemo
    root      2527  2495  0 09:14 pts/1    00:00:00 grep --color=auto java
    
  • 구체적인 루트나 코드ps-mp 프로세스-o THREAD,tid,time-m에 위치하여 모든 루트-p 지정한 프로세스 id-o 매개 변수를 표시하면 사용자 정의 형식
  • [root@node3 ~]# ps -mp 2485 -o THREAD,tid,time
    USER     %CPU PRI SCNT WCHAN  USER SYSTEM   TID     TIME
    root      8.5   -    - -         -      -     - 00:00:30
    root      0.0  19    - futex_    -      -  2485 00:00:00
    root      8.3  19    - n_tty_    -      -  2486 00:00:29
    root      0.0  19    - futex_    -      -  2487 00:00:00
    root      0.0  19    - futex_    -      -  2488 00:00:00
    root      0.0  19    - futex_    -      -  2489 00:00:00
    root      0.0  19    - futex_    -      -  2490 00:00:00
    root      0.0  19    - futex_    -      -  2491 00:00:00
    root      0.0  19    - futex_    -      -  2492 00:00:00
    root      0.0  19    - futex_    -      -  2493 00:00:00
    root      0.0  19    - futex_    -      -  2494 00:00:00
    
  • 필요한 스레드 ID를 16진수 형식(영어 소문자 형식)으로 변환 printf'%x'2486 2486의 16진수 9B6
  • jstack 프로세스 ID | grep tid(16 프로세스 스레드 ID 소문자 영문)-A60-A 표시 줄 수
  • [root@node3 ~]# jstack 2485 | grep 9b6 -A60
    "main" #1 prio=5 os_prio=0 tid=0x00007f165004b800 nid=0x9b6 runnable [0x00007f16590c3000]
       java.lang.Thread.State: RUNNABLE
            at java.io.FileOutputStream.writeBytes(Native Method)
            at java.io.FileOutputStream.write(FileOutputStream.java:326)
            at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
            at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
            - locked <0x00000000fac20580> (a java.io.BufferedOutputStream)
            at java.io.PrintStream.write(PrintStream.java:482)
            - locked <0x00000000fac18170> (a java.io.PrintStream)
            at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
            at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291)
            at sun.nio.cs.StreamEncoder.flushBuffer(StreamEncoder.java:104)
            - locked <0x00000000fac18128> (a java.io.OutputStreamWriter)
            at java.io.OutputStreamWriter.flushBuffer(OutputStreamWriter.java:185)
            at java.io.PrintStream.newLine(PrintStream.java:546)
            - eliminated <0x00000000fac18170> (a java.io.PrintStream)
            at java.io.PrintStream.println(PrintStream.java:807)
            - locked <0x00000000fac18170> (a java.io.PrintStream)
            at com.wu.pratice.jvm.UnableCreateNewThreadDemo.main(UnableCreateNewThreadDemo.java:24)
    
    "VM Thread" os_prio=0 tid=0x00007f16500cb800 nid=0x9b7 runnable 
    
    "VM Periodic Task Thread" os_prio=0 tid=0x00007f165011a000 nid=0x9be waiting on condition 
    
    JNI global references: 5
    

    좋은 웹페이지 즐겨찾기