24 Ağustos 2018 Cuma

ulimit komutu

Giriş
ulimit komutu genellikle login shell dosyası olan /etc/profile dosyasına yazılır. Tüm alanları gösteren çıktı şöyledir
[root@jboss02 ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 72192
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65535
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 72192
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

max user processes Alanı
Kullanıcının kaç tane process/thread açabileceğini gösterir. Eğer üst sınır aşılırsa, örneğin yeni bir thread yaratılamazsa, Java'da şu hatayı alırız.
Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread

-a seçeneği
Şöyle yaparız
ulimit -aH
Tüm atanmış değerleri gösterir.

-c seçeneği - core dosyası
Eğer core dump üretme yeteneği kapalı ise şuna benzer bir hata alırız.
Failed to write core dump. Core dumps have been disabled. To enable core dumping, try ulimit -c unlimited before starting Java again
Üretilen core dosyası için kullanılacak büyüklüğü belirtir.
Örnek
core dosyası üretilmesin istiyorsak şöyle yaparız.
ulimit -c 0
Örnek
Şöyle yaparız.
ulimit -c unlimited
Örnek
core dosyasında kullanılacak örüntü için şöyle yaparız.
sysctl -w kernel.core_pattern='/var/core/%e.%p.%h.%t.core'
Örnek
Şöyle yaparız.
#!/bin/sh
#
# Starts the application.
#
NAME=my_app
test -x /usr/bin/my_app || exit 0

start() {
  echo -n "Starting my app "

  sysctl -w kernel.core_pattern='/var/core/%e.%p.%h.%t.core'
  ulimit -c unlimited
  $NAME > /dev/null 2>&1 &
  echo "OK"

}
-H seçeneği - hard link
Şöyle yaparız.
ulimit -Hn 1048576
-l seçeneği
Belirtilen alanı sorgular. Şöyle yaparız.
ulimit -c -l
Çıktı olarak şunu alırız.
core file size          (blocks, -c) unlimited
max locked memory       (kbytes, -l) 64
-T seçeneği - thread
Uygulamanın kullanabileceği thread sayısı ayarlanabilir.

-S seçeneği - soft link
Örnek
Değiştirmek için şöyle yaparız.
$ ulimit -Su 2000

$ ulimit -a | grep processes
max user processes (-u) 2000
Örnek
Şöyle yaparız.
ulimit -Sn 1048576
-s seçeneği - stack
"ulimit -s" komutuyla da uygulamanın en fazla ne kadar stack (kilobyte cinsinden) kullanabileceği  ayarlanabilir.

2 yorum:

  1. ulimit -Hn 4096 bu değeri kalıcı olarak nasıl arttırabilirim

    YanıtlaSil
    Yanıtlar
    1. /etc/security/limits.conf dosyası kullanılabilir. https://linuxcorbasi.blogspot.com/2018/08/etcsecuritylimitsconf-dosyas.html yazısına bakın, veya ulimit komutunu /etc/profile dosyasına yazın

      Sil