Redis服务启动过程中用到的几个系统函数(非常有用)

1.setlocale(LC_COLLATE,""); //地域信息设置

2.tzset(); /* Populates 'timezone' global. */ //时区设置

3.srand(time(NULL)^getpid());//随机数种子

4.signal(SIGHUP, SIG_IGN);//屏蔽SIGHUP信号

5.openlog(server.syslog_ident, LOG_PID | LOG_NDELAY | LOG_NOWAIT, server.syslog_facility); //linux 系统日志

7.fcntl(j,F_GETFD) //检查句柄是否存在

8.getrlimit(RLIMIT_NOFILE,&limit) //获取进程可用的最大句柄

9.setsid(); /* create a new session */ fork后子进程从父进程继承了:SessionID、进程组ID和打开的终端。子进程如果要脱离这些,代码中可通过调用setsid来实现 

10.dup2(fd, STDIN_FILENO);将STDIN_FILENO重定向到fd,redis中的fd是/dev/null,相当于shell命令的>>

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis启动过程内存暴涨可能有以下几种原因: 1. 数据载入:当Redis启动时,会从磁盘读取以前持久化的数据文件,并将其加载到内存。如果数据量很大,加载过程内存的使用量会暴涨。可以通过配置`maxmemory`参数来限制内存使用的上限,以避免内存溢出。 2. RDB恢复:如果Redis启动时使用的是RDB持久化方式,会读取RDB文件并将其恢复到内存。如果RDB文件很大,恢复过程内存的使用量会暴涨。同样,可以通过`maxmemory`参数来限制内存的使用。 3. AOF重写:如果Redis启动时使用的是AOF持久化方式,会根据AOF文件的内容重写内存的数据。AOF重写的过程,会暂时使用更多的内存来重建数据结构,因此内存使用量会暴涨。可以通过`maxmemory`参数来限制内存的使用。 4. 内存碎片:Redis使用jemalloc来管理内存,会产生内存碎片。在启动过程,jemalloc需要整理内存碎片,导致内存的使用量暴涨。可以通过配置`jemalloc`参数来优化内存碎片的情况。 针对这些问题,我们可以采取以下几种措施来处理: 1. 调整`maxmemory`参数的大小,确保Redis启动时不会占用过多的内存。 2. 对于大型的数据集,可以选择使用集群模式,将数据分布在多个Redis实例上,以减少单个实例的内存占用。 3. 对于AOF持久化方式,可以调整AOF的重写策略,减少重写的频率,从而降低内存的使用。 4. 定期进行内存优化操作,如使用`MEMORY DOCTOR`命令来检查内存碎片的情况,并调整相关参数来降低内存碎片的程度。 通过以上措施,我们可以有效地控制Redis启动过程内存的使用量,避免内存暴涨的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值