[Jemalloc] 루비의 메모리 사용률 상승을 막으려고요.

3287 단어 AWSRailsRubytech

개시하다


이 문장의 종점


Rubby의 Arrocata를 Joemalloc으로 변경하여 메모리 사용률 증가 방지


【현황】
AWS의 EC2(Amazon Linux2)에서 rails를 실행합니다.

이렇게 메모리 사용률이 끊임없이 상승하여 돌아올 수 없다.무섭다
다양한 찾기 중 루비의 아로카타를 제말락으로 변경하는 것이 좋다.
제말락도 아레나를 스레드 단위로 시행하고 있지만, 말락에서 발생하는 파편화를 피하기 위해 설계된 것으로 보인다.
메모리 사용률 상승을 막기 위해 루비의 아로카타를 말락에서 제말락으로 변경했다.

종점으로 통하는 노정

  • 제말loc
  • 활성화
  • jemalloc가 유효한지 확인
  • 컨디션

  • AWS의 EC2(AmazonLinux2)에서 rails 앱이 이동
  • Ruby2.7.1
  • 실천하다


    1. Jemalloc 활성화


    Ruby 버전 확인


    $ ruby -v
    ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux]
    

    시스템 중지


    $ kill -9 <PID番号>
    

    종속 라이브러리 설치


    $ sudo amazon-linux-extras install -y epel
    $ sudo yum install -y jemalloc-devel
    

    rbenv로 루비 다시 설치


    $ RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 2.7.1
    rbenv: /home/ec2-user/.rbenv/versions/2.7.1 already exists
    continue with installation? (y/N) y
    Downloading ruby-2.7.1.tar.bz2...
    -> https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.1.tar.bz2
    Installing ruby-2.7.1...
    Installed ruby-2.7.1 to /home/ec2-user/.rbenv/versions/2.7.1
    
    ※RUBY_CONFIGURE_추가 OPS 옵션 지정jemalloc

    부팅 시스템


    $ rails s -e production
    

    2.jemalloc가 유효한지 확인


    rbconfig 확인 방법


    $ ruby -r rbconfig -e "puts RbConfig::CONFIG['MAINLIBS']"
    -lz -lpthread -lrt -lrt -ljemalloc -ldl -lcrypt -lm
    
    ljemaloc만 뜨면 OK

    과정을 확인하는 방법


    $ sudo strings /proc/<RubyのアプリのPID番号>/maps | grep jemalloc
    7fe716d40000-7fe716d71000 r-xp 00000000 103:01 9054958                   /usr/lib64/libjemalloc.so.1
    7fe716d71000-7fe716f70000 ---p 00031000 103:01 9054958                   /usr/lib64/libjemalloc.so.1
    7fe716f70000-7fe716f72000 r--p 00030000 103:01 9054958                   /usr/lib64/libjemalloc.so.1
    7fe716f72000-7fe716f73000 rw-p 00032000 103:01 9054958                   /usr/lib64/libjemalloc.so.1
    
    pid 확인 메모리 맵을 지정하고,jemaloc의 경로를 표시하면 OK

    콘솔을 통해서 확인하는 방법.


    $ irb
    irb(main):001:0> RbConfig::CONFIG['MAINLIBS']
    => "-lz -lpthread -lrt -lrt -ljemalloc -ldl -lcrypt -lm "
    
    -ljemalloc가 뜨면 OK.

    끝맺다


    Jemalloc이 활성화되었습니다.
    때릴 수 있는 손 때렸어.다음 차일드를 기다립니다..

    참고 문장


    감사합니다.
    https://techracho.bpsinc.jp/hachi8833/2017_12_28/50109
    https://zenn.dev/sukedon/scraps/32d5bc84aa08b6
    https://tech.studyplus.co.jp/entry/2019/09/09/094140

    좋은 웹페이지 즐겨찾기