mysql ulimit_linux ulimit总结(一)

2023-11-05 20:50

本文主要是介绍mysql ulimit_linux ulimit总结(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

注:本文档实验机器为:CentOS Linux release 7.2.1511 (Core)

1、ulimit概念

功能说明:控制shell程序的资源。

语法:ulimit [-aHS][-c ][-d ][-f ][-m ][-n ][-p ][-s ][-t ][-u ][-v ]

补充说明:ulimit为shell内建指令,可用来控制shell执行程序的资源。

2、ulimit常用参数

4f087d972b9113361a2c27b29bb945ec.png

3、ulimit –a输出结果说明

dafe9d157d15f9f602d17279689695f7.png

840d8e1cc6bc4a4cd1264990ab3fb89b.png

de72ada965bb0b310f12ff692335f584.png

4、常用操作

4.1、临时修改操作

注:ulimit命令修改的数值只对当前登录用户的目前使用环境有效,系统重启或者用户退出后就会失效,ssh新打开的窗口也是失效的。

4.1.1、显示系统资源的设置

# ulimit -a

4.1.1、对生成core文件的大小不进行限制

# ulimit –c unlimited

4.1.1、限制最大可加锁内存大小

ulimit -l unlimited

4.1.1、限制最大打开文件数

ulimit –n unlimited

4.1.1、限制用户最多可以使用多少个进程

ulimit -u unlimited

4.2、永久修改

在/etc/security/limits.conf文件中修改

[root@centosDB ~]# cat /etc/security/limits.conf

*           soft    nproc   16384

*           hard    nproc   65536

*           soft    nofile  2047

*           hard    nofile  65536

*           soft    core    unlimited

*           hard    core    unlimited

注:(1)需要重启系统生效,这个在生产环境是不能接受的。

(2)经本人测试发现,以上结果其他用户的max user processes没有改变

Root帐号显示的结果

2feeaa305c212f84238b0c5738347e58.png

centosdb帐号显示的结果

2dc606f3a3831957fb245190b2052668.png

从以上结果可以看出,centosdb的max user processes,不生效啊。

(3)从root帐号下分析,

Open files显示是2047,这个值是设置的软链接的值,而max user processes显示的是65536,则是硬链接的值,那ulimit –a显示的结果到底是软链接的值,还是硬链接的值呢?(网上的资料说ulimit 默认显示的是软链接,这就要打个问号了。)

其他方法:

注:(1) 把ulimit修改命令放入/etc/profile里面,网上说,可以使全部用户都生效,经本人在centos72上测试发现,只有root用户生效,而其他用户不生效,要使其他用户也生效,需要执行 source /etc/profile命令,但是重启系统后又失效了。

(2)把ulimit修改命令放入~/.bashrc,只对当前用户生效,而其他用户不生效,想要让其他用户也生效,需要分别修改其他用户的~/.bashrc文件。

总结:从以上分析,可以看出每一种修改都有点问题,那怎么做到永久修改呢,可以这样做,临时修改+永久修改,这样子在不重启系统的情况下,资源限制能生效,重启系统的情况下,也是生效的。

4.3、案例—linux安装oracle修改资源限制

#cat /etc/security/limits.conf

oracle           soft    nproc   2047

oracle           hard    nproc   16384

oracle           soft    nofile  1024

oracle           hard    nofile  65536

注:npro表示– max number of processes

nofile表示max number of open files

5、C语言操作

Linux命令行下查看帮助,man 3 ulimit

887c85deb85420b6271a8efbcd38c880.png

会发现描述信息里有“This routine is obsolete”这句话,表示这个程序过时了。建议使用getrlimit与setrlimit或sysconf代替;(注:bash下可以正常使用,只是c操作这个api过时)

查看getrlimit与setrlimit帮助信息–man 2 setrlimit,

下面简单展示使用头文件及接口,具体可以看帮助信息

#include

#include

int getrlimit(int resource, struct rlimit *rlim);

int setrlimit(int resource, const struct rlimit *rlim);

int prlimit(pid_t pid, int resource, const struct rlimit *new_limit, struct rlimit *old_limit);

5.1、简单例子

以下操作表示一个进程能够最大创建文件的大小#include #include #include #include int main (int argc, char *argv[]){  struct rlimit limit;  /* Set the file size resource limit. */  limit.rlim_cur = 65535;  limit.rlim_max = 65535;  if (setrlimit(RLIMIT_FSIZE, &limit) != 0) {    printf("setrlimit() failed with errno=%d\n", errno);    exit(1);  }  /* Get the file size resource limit. */  if (getrlimit(RLIMIT_FSIZE, &limit) != 0) {    printf("getrlimit() failed with errno=%d\n", errno);    exit(1);  }  printf("The soft limit is %llu\n", limit.rlim_cur);  printf("The hard limit is %llu\n", limit.rlim_max);  exit(0);}

注:RLIMIT_FSIZE :The  maximum  size  of files that the process may create

5.2、例子修改core信息#include #include #include #include #define CORE_SIZE   8*1024int main(){    struct rlimit rlmt;    if (getrlimit(RLIMIT_CORE, &rlmt) == -1) {        return -1;    }      printf("Before set rlimit CORE dump current is:%d, max is:%d\n", (int)rlmt.rlim_cur,     (int)rlmt.rlim_max);     rlmt.rlim_cur = (rlim_t)CORE_SIZE;    rlmt.rlim_max  = (rlim_t)CORE_SIZE;     if (setrlimit(RLIMIT_CORE, &rlmt) == -1) {        return -1;    }       if (getrlimit(RLIMIT_CORE, &rlmt) == -1) {        return -1;    }      printf("After set rlimit CORE dump current is:%d, max is:%d\n", (int)rlmt.rlim_cur,     (int)rlmt.rlim_max);/*测试非法内存,产生core文件*/    int *ptr = NULL;    *ptr = 10;    return 0;}

5.3、Prlimit例子#define _GNU_SOURCE#define _FILE_OFFSET_BITS 64#include #include #include #include #include  #define errExit(msg)     do { perror(msg); exit(EXIT_FAILURE); \                               } while (0) int main(int argc, char *argv[]) {       struct rlimit old, new;       struct rlimit *newp;       pid_t pid;        if (!(argc == 2 || argc == 4)) {              fprintf(stderr, "Usage: %s  [ "                            "]\n", argv[0]);              exit(EXIT_FAILURE);       }pid = atoi(argv[1]); /* PID of target process */        newp = NULL;       if (argc == 4) {              new.rlim_cur = atoi(argv[2]);              new.rlim_max = atoi(argv[3]);              newp = &new;       }        /* Set CPU time limit of target process; retrieve and display        *               previous limit */        if (prlimit(pid, RLIMIT_CPU, newp, &old) == -1)              errExit("prlimit-1");       printf("Previous limits: soft=%lld; hard=%lld\n", (long long) old.rlim_cur,                     (long long) old.rlim_max);        /* Retrieve and display new CPU time limit */if (prlimit(pid, RLIMIT_CPU, NULL, &old) == -1)              errExit("prlimit-2");       printf("New limits: soft=%lld; hard=%lld\n", (long long) old.rlim_cur,                     (long long) old.rlim_max);        exit(EXIT_FAILURE);}

这篇关于mysql ulimit_linux ulimit总结(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/352416

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

如何去写一手好SQL

MySQL性能 最大数据量 抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置、数据表设计、索引优化。500万这个值仅供参考,并非铁律。 博主曾经操作过超过4亿行数据

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor