isc-dhcp性能优化的一种方法
使用gprof工具,可以测出dhcp的性能瓶颈在mdb.c中的lease_enqueue函数。该函数的功能就是维护地址池内部的不同状态下的地址链表,这些链表都必须根据时间排序的。目的是每次遍历都从最老的lease开始。
排序代码:
/* Insertion sort the lease onto the appropriate queue. */
for (; lp ; lp = lp->next) {if (lp -> sort_time >= comp -> sort_time)break;prev = lp;
}
假设,我们配置了一个有几十万个IP的地址池,并且这些地址都是可分配的地址。那么它们都会被放到pool->free的链表中,每次维护链表进行排序的时候就会耗费很长时间。
很可惜,很多人发现这个问题,并且也反应给isc-dhcp官方,但是貌似没有得到什么好的解决办法。我也折腾了一段时间,偶然想到这些状态的地址链表都是被地址池包含的,如果控制每个地址池内部的地址个数,是不是会有情况?
传统的dhcpd.conf文件:
subnet 192.0.0.0 mask 192.255.255.255 {option routers 192.0.0.1;default-lease-time 600;max-lease-time 7200;pool {range 192.0.0.1 192.4.255.255} }
如果这样配置,分配地址的并发性能只能十几个每秒。
我把这个大地址池拆分成小地址池,每个小地址池内部包含1024个地址,配置文件改为:
subnet 192.0.0.0 mask 192.255.255.255 {option routers 192.0.0.1;default-lease-time 600;max-lease-time 7200;pool {range 192.0.0.1 192.0.3.255}pool {range 192.0.4.0 192.0.7.255}pool {range 192.0.8.0 192.0.11.255}…… }
果然,并发性能提高了很多,能达到每秒500个左右。
另外,把lease文件放到共享内存中也能提高不少性能,毕竟对内存的读写比硬盘快多了。
(同时也依赖服务器的硬件配置,不过这个影响不是致命的。呵呵……)
转载于:https://blog.51cto.com/cizyzhang/1366766
isc-dhcp性能优化的一种方法相关推荐
- golang string 加号连接性能慢_面试必备:浅析C#性能优化的若干种方法
浅析C#性能优化的若干种方法 1.1 垃圾回收 垃圾回收解放了手工管理对象的工作,提高了程序的健壮性,但副作用就是程序代码可能对于对象创建变得随意. 1.1.1 避免不必要的对象创建 由于垃圾回收的代 ...
- MySQL性能优化的9种方法
MySQL性能优化的9种方法 1.选择最合适的字段属性 Mysql是一种关系型数据库,可以很好地支持大数据量的存储,但是一般来说,数据库中的表越小,在它上面执行的查询也就越快.因此,在创建表的时候,为 ...
- Java中性能优化的35种方法汇总
原文地址:http://www.jb51.net/article/102831.htm 前言 对程序员们来说,代码优化是一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于 ...
- 前端性能优化的七种方法
前端性能优化主要有七种方法,包括减少请求数量.减少资源大小.优化网络连接.优化资源加载.减少重绘回流.使用性能更好的API和webpack优化 1.减少请求数量 1.1 图片处理 1.1.1 雪碧图 ...
- PHP程序性能优化的50种方法
用单引号代替双引号来包含字符串,这样做会更快一些.因为 PHP 会在双引号包围的 字符串中搜寻变量,单引号则不会,注意:只有 echo 能这么做,它是一种可以把多个字符 串当作参数的"函数& ...
- MySQL 性能优化:8 种常见 SQL 错误用法!
声明:转载自 MySQL 性能优化:8 种常见 SQL 错误用法! 1.LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如对于下面简单的语句,一般 DBA 想到的办法是 ...
- php性能优化的几个方法
核心提示:本文主要讲述php性能优化的几个方法相关内容:PHP是一种在服务器端执行的脚本语言,它开发了世界上许多知名的网站,包括雅虎和Facebook等.下面介绍的几条PHP代码.性能优化的技巧供读者 ...
- 【FPGA——时序篇】时序优化的几种方法
参考博文:https://www.cnblogs.com/sepeng/p/5578402.html 参考书目:英文版:<advanced FPGA design> 中文版:< ...
- DB2设计与性能优化:原理、方法与实践
DB2设计与性能优化:原理.方法与实践 王飞鹏 陈辉 张广舟 成孜论 编著 ISBN 978-7-121-13094-6 2011年4月出版 定价:89.80元(含光盘1张) 16开 416 ...
最新文章
- 2018-8-22-粒子滤波
- mysql基础认识1
- python爬虫接单经历_一个Python小白5个小时爬虫经历
- mxnet DepthwiseConv2D
- php blocklog_SQLSERVER中的logblock校验(译)
- DayDayUp:《P2P行业最高端的玩法》源于网友网络收集
- mysql 删除重复数据_MySQL查找和删除重复数据
- C# VS本地Sqlserver 操作笔记
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1050:骑车与走路
- c++ 模板教程(c语言中文网) 自己运行实例
- wps多人协作后怎么保存_蜂蜜开封后能放多久?蜂蜜开封后怎么保存?蜂蜜存放要注意事项...
- vxworks 调式
- java query包,有没有Java的http_build_query函数的Java等价物?
- 第二个情人节表白网页源码
- 记录——《C Primer Plus (第五版)》第七章编程练习第八题
- Laravel框架——增删改查
- idea 配置maven插件
- C++ UE4 将凹多边形拆分为多个凸多边形
- 修复Windows 7升级Windows 10后Japanese输入法无法使用的Bug
- codeforces gym 100827A Runes
热门文章
- 动与静--软件的雕塑艺术
- 大数据_Flink_数据处理_运行时架构3_yarn上作业提交流程---Flink工作笔记0018
- 大数据之-Hadoop3.x_Yarn_生产环境核心参数配置案例---大数据之hadoop3.x工作笔记0150
- 大数据之_亿级分布式日志管理ELK_工作笔记001_ELK认识介绍
- 杭电2122Ice_cream’s world III
- 杭电1286找新朋友
- C#动态生成Word文档并填充数据(一)
- 群晖安装pdo_mysql_使用docker方式部署禅道
- 用汇编的眼光看C++(之class构造、析构)
- 搭建centos在线yum源镜像服务器,搭建CentOS在线yum源镜像服务器(上)