CentOS 5.x和CentOS 6.x限制单个用户线程数上限的不同行为

2024-01-09 14:08

本文主要是介绍CentOS 5.x和CentOS 6.x限制单个用户线程数上限的不同行为,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在使用HiveServer的过程中,通过一个Java程序向其并发提交多个Job,我们发现在同时提交的任务较多的时候,程序就会莫名其妙地卡住,并报出内存溢出(OOM)的错误,但是经过排查,系统还有数十GB的内存处于FREE状态,JVM的内存上限也非常大,所以可以断定问题的原因并不是因为内存不够,而有其它原因。

根据以往的经验,我们在部署服务器的时候,会设置一个系统最大打开文件数量和系统最大进程(线程)数,这个值我们在root用户下做了如下设置(设置在/etc/security/limits.conf文件中):

[plain] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. *                -       nproc           1024000  
  2. *                -       nofile          1024000 
这样的话,root用户能开启的最大进程(线程)数量就是1024000。但是这个设置能否继承到其它用户的设置上却在CentOS 5.8与CentOS 6.4之间有了差别:


首先,在CentOS 5.8上:

[plain] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. [root@monet00 ~]# useradd testuser  
  2. [root@monet00 ~]# su - testuser  
  3. [testuser@monet00 ~]$ ulimit -u  
  4. 1024000  
  5. [testuser@monet00 ~]$ ulimit -u  
  6. 1024000 
可以看到,新增加的用户成功继承了root设置的系统设置。


然后,在CentOS 6.4上却是:

[html] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. [root@etl-1 ~]# useradd testuser  
  2. [root@etl-1 ~]# su - testuser  
  3. [testuser@etl-1 ~]$ ulimit -u  
  4. 1024 
就是因为这个原因,我们在6.4版本的CentOS上,虽然设置了系统的最大线程数是1024000,但是对于运行HiveServer的hive用户而言,它能够开启最大进程(线程)数仍然是默认的1024个,这样就导致,任务提交比较密集的时候,会出现莫名其妙的失败。至于解决办法,就是加入以下配置,明确对hive用户的配置:
[plain] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. hive   - nofile 1024000  
  2. hive   - nproc  1024000 
这样,在我们放大了提交JOB的并行压力之后,系统也能够完美地运行成功。

从这件事情上可以看出,经验固然重要,但是不能把自己关在这些经验构筑的笼子中,必须常怀怀疑的态度,做完工作之后,一定要再次检查,确保达到我们想要的效果。

这篇关于CentOS 5.x和CentOS 6.x限制单个用户线程数上限的不同行为的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/587378

相关文章

CentOS 7 YUM源配置错误的解决方法

《CentOS7YUM源配置错误的解决方法》在使用虚拟机安装CentOS7系统时,我们可能会遇到YUM源配置错误的问题,导致无法正常下载软件包,为了解决这个问题,我们可以替换YUM源... 目录一、备份原有的 YUM 源配置文件二、选择并配置新的 YUM 源三、清理旧的缓存并重建新的缓存四、验证 YUM 源

Mysql中的用户管理实践

《Mysql中的用户管理实践》:本文主要介绍Mysql中的用户管理实践,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录13. 用户管理13.1 用户 13.1.1 用户信息 13.1.2 创建用户 13.1.3 删除用户 13.1.4 修改用户

Nginx 413修改上传文件大小限制的方法详解

《Nginx413修改上传文件大小限制的方法详解》在使用Nginx作为Web服务器时,有时会遇到客户端尝试上传大文件时返回​​413RequestEntityTooLarge​​... 目录1. 理解 ​​413 Request Entity Too Large​​ 错误2. 修改 Nginx 配置2.1

Spring Boot 事务详解(事务传播行为、事务属性)

《SpringBoot事务详解(事务传播行为、事务属性)》SpringBoot提供了强大的事务管理功能,通过@Transactional注解可以方便地配置事务的传播行为和属性,本文将详细介绍Spr... 目录Spring Boot 事务详解引言声明式事务管理示例编程式事务管理示例事务传播行为1. REQUI

详解如何在SpringBoot控制器中处理用户数据

《详解如何在SpringBoot控制器中处理用户数据》在SpringBoot应用开发中,控制器(Controller)扮演着至关重要的角色,它负责接收用户请求、处理数据并返回响应,本文将深入浅出地讲解... 目录一、获取请求参数1.1 获取查询参数1.2 获取路径参数二、处理表单提交2.1 处理表单数据三、

Windows系统宽带限制如何解除?

《Windows系统宽带限制如何解除?》有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文就跟大家一起来看看Windows系统解除网络限制的操作方法吧... 有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

SpringBoot UserAgentUtils获取用户浏览器的用法

《SpringBootUserAgentUtils获取用户浏览器的用法》UserAgentUtils是于处理用户代理(User-Agent)字符串的工具类,一般用于解析和处理浏览器、操作系统以及设备... 目录介绍效果图依赖封装客户端工具封装IP工具实体类获取设备信息入库介绍UserAgentUtils

JAVA保证HashMap线程安全的几种方式

《JAVA保证HashMap线程安全的几种方式》HashMap是线程不安全的,这意味着如果多个线程并发地访问和修改同一个HashMap实例,可能会导致数据不一致和其他线程安全问题,本文主要介绍了JAV... 目录1. 使用 Collections.synchronizedMap2. 使用 Concurren

Mysql用户授权(GRANT)语法及示例解读

《Mysql用户授权(GRANT)语法及示例解读》:本文主要介绍Mysql用户授权(GRANT)语法及示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql用户授权(GRANT)语法授予用户权限语法GRANT语句中的<权限类型>的使用WITH GRANT