- CATALOG -
NotFound
千里之行始于足下
监控 Ruby 进程
  • 系统环境 Ubuntu 18.04

指标

  • 当前进程占用的内存:

    cat /proc/self/status | grep VmRSS
    VmRSS:       740 kB
    
    match = File.read('/proc/self/status').match(/VmRSS:\s+(\d+)/)
    match && match[1].to_f * 1024
    
  • 当前进程打开的文件描述符总数:

    ls /proc/self/fd | wc -l
    
    Dir.glob('/proc/self/fd/*').length
    
  • 当前进程可打开的最大文件描述符数量:

    cat /proc/self/limits | grep "Max open files"
    
    match = File.read('/proc/self/limits').match(/Max open files\s*(\d+)/)
    match && match[1]
    
  • 进程 CPU 时钟:

    Process.clock_gettime(Process::CLOCK_PROCESS_CPUTIME_ID, :float_second)
    
  • 墙上时钟,受系统时间影响,调整系统时间时会发生变化:

    Process.clock_gettime(Process::CLOCK_REALTIME, :float_second)
    
  • 系统启动时一直计数,不会受到系统时间的影响:

    Process.clock_gettime(Process::CLOCK_MONOTONIC, :float_second)
    
  • 线程 CPU 时钟:

    Process.clock_gettime(Process::CLOCK_THREAD_CPUTIME_ID, :float_second)
    
  • 测量 Ruby 代码执行时间:

    Benchmark.measure { "a"*1_000_000_000 }
    

    返回 用户 CPU 时间、系统 CPU 时间、用户 CPU 时间以及 系统 CPU 时间之和。

参考


Last modified on 2020-05-14