首页 > 其他分享 >随机数与rngd服务

随机数与rngd服务

时间:2023-03-15 22:22:48浏览次数:39  
标签:kernel 服务 random rngd sys 随机数 proc

详解熵池
熵池本质上是若干字节。/proc/sys/kernel/random/entropy_avail中存储了熵池现在的大小,/proc/sys/kernel/random/poolsize是熵池的最大容量,单位都是bit。如果entropy_avail的值小于要产生的随机数bit数,那么/dev/random就会堵塞。
那么,为什么熵池不够用呢?
google了一下资料,熵池实际上是从各种noice source中获取数据,noice source可能是键盘事件、鼠标事件、设备时钟中等。linux内核从2.4升级到2.6时,处于安全性的考虑,废弃了一些source。source减少了,熵池补给的速度当然也变慢,进而不够用。
其实,通过消耗熵池,可以构造DOS攻击。原理很简单,熵池空了,依赖随机数的业务(SSL,加密等)就不能正常进行
————————————————
版权声明:本文为CSDN博主「chinoukin」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chinoukin/article/details/102566755
————————————————————————————————————
https://www.cnblogs.com/zh-dream/p/14688410.html
由于rngd进程导致的tomcat 启动慢
之前在阿里云做客服的时候遇到某用户提交工单,反馈一批服务器中有一台上面运行的后端应用启动缓慢

具体现象由于客户隐私就不贴了

处理办法:

1、先让用户将程序调整到debug级别,看一下打印出来的日志,在哪一步出现了阻塞。

2、如果日志打印时有阻塞时间长的现象,可以通过strace命令看一下系统调用(我遇到的时候是日志打印的时候阻塞了很长时间)

3、/proc/sys/kernel/random/entropy_avail查看此文件中的数值大小,如果过小,那么需要安装rngd

3、rngd安装:

复制代码
yum install rng-tools 安装rngd服务
systemctl start rngd 启动服务
cp /usr/lib/systemd/system/rngd.service /etc/systemd/system

编辑 /etc/systemd/system/rngd.service service
ExecStart=/sbin/rngd -f -r /dev/urandom

systemctl daemon-reload 重新载入服务

systemctl restart rngd 重启服务
复制代码
可以使用head -c1024 /dev/random 消耗随机数,复现问题。当/proc/sys/kernel/random/entropy_avail的值很小的时候,这时tomcat会启动很慢
——————————————————————
https://bbs.huaweicloud.com/forum/thread-130873-1-1.html
/dev/random产生随机数的原理是利用当前系统的熵池(random pool)来计算出固定一定数量的随机比特,然后将这些比特作为字节流返回。如果随机池数据太少,则调用/dev/random会阻塞,等待随机池数据被填充。

而rngd系统服务的作用是负责动态补充该熵池资源,从测试环境问题情况来看,很有可能由于业务对随机数大量获取,导致rngd服务过载,性能成为瓶颈,从而反过来拖慢了业务的运行。

附-【关于随机数性能-滴池检查】

1、查看系统熵池的容量:cat /proc/sys/kernel/random/poolsize // 默认4096

2、查看从熵池中读取熵的阀值:cat /proc/sys/kernel/random/read_wakeup_threshold

3、查看当前系统熵池中拥有的熵数: cat /proc/sys/kernel/random/entropy_avail (当entropy_avail中的值少于read_wakeup_threshold阀值,这时读取/dev/random会被阻塞)

标签:kernel,服务,random,rngd,sys,随机数,proc
From: https://www.cnblogs.com/Haihong72H/p/17220422.html

相关文章

  • 实现客户端上传文件,服务器接收并永久化存储
    publicclassClientDemo{publicstaticvoidmain(String[]args)throwsIOException{//客户端将本地文件上传到服务器,并接收服务器的反馈......
  • Node.js 微服务 All In One
    Node.js微服务AllInOneNest.js微服务(......
  • 服务器bios配置阵列
    服务器关机一般是长按五秒,磁盘支持热插拔,不过建议关机操作,因为如果你同时把几块盘,刚好有台机器ceph都分在你把的盘,那就奏乐一、开机按del或者f1进去选高级,先配下网络地址......
  • 宝塔面板架设邮箱服务
    你还在为邮箱注册账号不够用烦恼吗,自己架设一个邮箱服务器,想用多少用多少。宝塔面板用于管理linxu主机的傻瓜式管理平台安装就不说了,照着官网来系统:DebianGNU/Linu......
  • 微服务架构的新挑战
    《人月神话》中提到,软件世界没有“银弹”,这句话当然适用于架构领域从网络、性能、运维成本、组织架构与集成测试五个方面分别进行阐述。第一点,跨进程通信带来的新问题。......
  • 记一次运气非常好的服务器渗透经历
    平平无奇的客服平台:这个客服平台是有RCE的,如果上传到的不是oss服务器,存储在本地服务器的话,在返回端口的url是存在st2。root权限,由于是客服后台服务器,没有啥有用价值......
  • VC MFC 使用 soap方式与web服务器交互
    首先安装MicrosoftSOAPToolkit3.0  soapsdk.exe链接:https://pan.baidu.com/s/15NeiuXQm4Wnvjvd8ngPwsA提取码:l8yh  包含头,引用库,命名空间#import"msxml6.d......
  • 通过随机数Random 和 redis的incr每次增加一的原子性来动态绑定队列
    通过随机数(1,4)和redis的incr每次增加一的原子性来动态绑定队列队列:3个;pod:40个:1.通过随机数Random().Next(1,4)轮询每次返回1,2,3来达到一个消费端服务POD每次......
  • 从架构的演变看微服务化架构
    微服务架构风格是一种将单机应用程序开发为一组小型服务的方法,每个小服务运行在自己的进程中,并以轻量级的机制来进行通信。这些服务围绕着业务能力所建立,并且由完全自动化......
  • 【HarmonyOS】FA服务卡片中如何给List添加消息事件
    ​ 【关键字】消息事件、JSUI、服务卡片 【介绍】HarmonyOS使用JSUI进行Java服务卡片开发大家一定不陌生,如果还有没有接触过服务卡片开发的可以参考以下文档:http......