要正常工作,我们必须确保在安装不同的软件后设置了正确的ulimit值。 Linux 系统提供了限制资源使用量的方法。每个 Linux 用户帐户都有自己的一组限制。限制系统单独应用于每个用户的过程。例如,如果某个阈值太低,系统将无法托管使用 Nginx/Apache 或 PHP/Python 应用程序的网站。限制通过 NA 命令查看或设置的系统资源。让我们了解如何使用 ulimit 来控制可用于 shell 和进程的资源。
Linux 上的 ulimit 值如何在 Linux 上为用户找到 ulimit
Linux ulimit 命令设置或显示用户进程资源限制。通常,可以在/etc/security/limits.conf 或 systemd 中找到这些限制。
两种限制
所有Linux限制分为两类:
- 软限制:所有用户都可以更改软限制,直至硬限制。将 ulimit 更改为-S。
- 硬限制 :仅允许 root 用户更改硬限制。将 ulimit 更改为-H。
查看 Linux 用户帐户的 ulimit
输入以下命令查看当前用户的所有软硬限制:
ulimit-Sa ## 显示软限制 ## ulimit-Ha ## 显示硬限制 ##
核心文件大小 (blocks,-c) 无限数据段大小 (kbytes,-d) 无限调度优先级 (-e) 0 文件大小 (blocks,-f) 无限待处理信号 (-i) 126787 最大锁定内存 (kbytes,-l) 65536 最大内存大小 (kbytes,-m) 无限打开文件 (-n) 1048576 管道大小 (512 bytes,-p) 8 POSIX 消息队列 (bytes,-q) 819200 实时优先级 (-r) 0 堆栈大小 (kbytes,-s) 无限 cpu 时间 (seconds,-t) 无限最大用户进程 (-u) 126787 虚拟内存 (kbytes,-v) 无限文件锁 (-x) 无限制
列出名为'tom'的用户的所有硬ulimit
您必须以 root 用户身份运行以下命令,或者至少可以通过 sudo/su 访问该帐户:
su-tom-c "ulimit-Ha" su-tom--shell/bin/bash-c "ulimit-Ha" ##可以使用sudo命令## sudo-u tom bash-c "ulimit-Ha" sudo-u tom sh-c "ulimit-Ha"
查找名为'jerry'的用户的所有软ulimit
重复以上操作:
su-jerry-c "ulimit-Sa" su-jerry--shell/bin/sh-c "ulimit-Sa" ##可以使用sudo命令## sudo-u jerry bash-c "ulimit-Sa" sudo-u jerry sh-c "ulimit-Sa"
为进程用户搜索'ulimit-a'
Linux 进程是程序的运行版本。例如,当您启动 Firefox 应用程序时,您创建了一个进程。但是,有些进程已经在后台运行了很长时间。通常,在后台运行时,您不能使用 sudo 或 su 命令来查找它们的限制。在这里,nginx 在 Debian Linux 上以 www-data 用户身份运行,但出于安全原因,默认情况下 shell 被阻止访问 www-data 用户帐户。换句话说,下面的 su/sudo 命令将 100% 失败。
$ su-www-data-c "ulimit-Sa" 这个账号目前不可用。
如何找到进程的ulimit
食谱:
cat/proc/PID/limits
先找到nginx的PID(进程ID),用grep运行ps:
ps aux | grep nginx
示例结果:
root 8868 0.0 0.0 127044 24048 ? Ss May23 0:00 nginx:主进程/usr/sbin/nginx-g daemon on; master_process 开启; www-data 18074 0.0 0.0 127276 24716 ? S May23 0:09 nginx:工作进程 www-data 18075 0.0 0.0 127276 22284 ? S May23 0:00 nginx:工作进程
现在输入 cat 命令:
cat/proc/8868/limits
示例结果:
限制软限制硬限制单位最大cpu时间无限无限秒最大文件大小无限无限字节最大数据大小无限无限字节最大堆栈大小8388608 无限字节 最大核心文件大小 0 无限字节 最大驻留设置 无限无限字节 最大进程 无限无限进程 最大打开文件 1024 1048576 个文件 最大锁定内存 65536 65536 字节 最大地址空间无限无限字节 最大文件锁无限无限锁 最大挂起信号 385944 385944 信号 最大消息队列大小 819200 819200 字节 最大优先级 0 0 最大实时优先级 0 0 最大实时超时无限制
大多数程序员和系统管理员都需要知道每个 nginx 进程的最大进程数和打开文件数。 简而言之,我们使用'ps aux | 找到PID。 grep appname ',然后在/proc/中查找该PID 的'limits' 文件。 然后你就会确定要应用哪些值来调整性能。
0 评论