OpenLDAP性能测试分析与优化

更新时间:2023-05-22 15:39:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第 2卷第 6期 520 0 8年 6月

计算机应用与软件Co u e mp t rApp iai n n ot r l to sa d S fwa e c

Vo. 5 N . 12 o 6Jn 0 8 u .2 0

Op n D P性能测试分析与优化 eL A黄金华李晓勇 (上海交通大学信息安全工程学院上海 20 4 ) 0 2 0

O eL A pn D P是开源的 L A D P服务器,在分布武目录服务中得到了广泛应用。详细分析了 O e L A目前所采用的独特 pn D P

“程池”式。通过比较 O eL A线模 pn D P在不同模式下的性能差异,现原模式对 L A发 D P操作存在较大的响应延迟。进一步给出了改

进的“线程池”式,模该改进模式能够降低 L A D P操作响应延迟。最后通过仿真实验,明改进模式可以明显改善 O eL A表 pnD P的性能。

关键词

L A O e L A线程池模式 D P pn D P

M EAS UREM ENT, ANALYSI S AND OPTI I M ZATI ON OF OPENLDAP PERFORM ANCE

Hu n ih a L a y n a gJn u i Xio o g( colfI om t nScryE gneig S ag a i t g U i rt, h nh i 0 2 0 C i ) Sho o n rai eui n i r, h n hi a o nv sy S ag a 0 4, hn f o t e n Jon ei 2 a

A src bt t a

O e L A s noe ig or pe na o D P ( i w i i c r A cs Po c1,s en sdi i raig p n D Pa pnn uc i l a s e m metino L A L te t f t r t y ces rt o) ibigue ces D eo o nn n

d sr ue i co ya pia in .W ef sl n ls h p ca t ra o l mo e a o t d b p n D .I i u dt e c re t d i i i td d r tr p l t s tb e c o rt a ay e t e s e il“ h e d p o” i y d d p e y O e L AP t s o n u r n f h mo e w l l c u e t e o e ain o DAP lr e e p n e lt n y atr c mp r gt e p r

r n e df r n e fOp n DAP i a iu d s a s h p rt fL o g rr s o s a e c fe o a n h ef ma c i e e c s o e L a i o f n v r smo e .A e n d o rf e i tr a o l s t e e eo e o e u i g t e r s o s ae c .F n l h e d p o h n d v lp d f rr d c n e p n e ltn y i h ia l y,s lt n e fc t n i e o td t a e rf e o lmo e g v s i ai s v r a i sr p re h tt e n d p o d i e mu o i i o h i b t rp r r a c nt e r s o s ae c fL AP o e ain . et e o e f m n e i h e p n e ltn y o D p rt s o

Ke wo d y rs

L g t eg t i co c e sp oo o O e L AP T r a o l d ih w ih r t r a c s r tc l d e y p n D h e d p o mo e

个主线程、守护线程和多个任务处理线程。主线程主要处理用

0引言 早期在开发一个 U i服务器的时候, nx常采用迭代服务器或者并发服务器。迭代服务器的主要缺陷是一次只能处理一个客

户命令;守护线程使用 IO多路复用监听网络端口,/与主线程采用字节流域套接字进行通信,与任务处理线程采用共享内存进行通信;务处理线程处理守护线程所创建或分配的任务。任 O eL A p n D P并不预先创建任务处理线程,而是让守护线程在必

户请求。并发服务器通常为每一个客户请求创建一个新线程(进程 )该客户服务完毕后服务线程 (或,或进程 )被销毁。频就

要时刻创建。当有新的客户请求到达时,守护线程将创建一个任务结构 c, t并将这个任务结构插入到“ ( o1中,后根 x池” po)然据需要创建或者唤醒任务处理线程执行该池中的各种任务。任务与任务处理线程并不是一一对应的,也就是说,同客户的请不求可能被同一任务处理线程处理,同一客户的多个请求可能被多个任务处理线程处理。 值得注意的是,里的“存储的并不是线程,这池”而是三种不同的任务链表, h— edn—i、p at e lt h

—re 即 p p nig lth— ci—i和 p f— s v s els。 hp p n ig it e dn— _

繁的创建和销毁线程所带来的开销会严重影响系统性能。为了

降低这种影响,系统在初始化阶段预先创建一定数量的服务线程,每个客户请求由当前可用线程池中的某个闲置线程处理。

当线程完成某次事务之后,标记为空闲,等待处理下次事务。仅当整个系统退出时,所有线程才被销毁。这就是线程池模式的基本思想。

作为开源的 L A D P服务器, pn D P在分布式目录服务中 O eL A得到了日益广泛的应用,但其并没有完全采用上述线程池模式, 而是使用其独特的“线程池”模式。本文详细分析了 O eL A pnD P

lt i是由分配了任务但尚未被处理的 c s t成 x组

的链表; p at e lt由正在被处理的 c h— ci—i是 v s t成的链表;p x组 h—fe re—

目前所采用的独特模式,比较了不同模式下 O e L A pn D P性能差异。分析显示可以通过改进“线程池”模式进一步降低 L A D P操作响应延迟。针对此问题,参考并发线程池模式并提出了改进

lt i由尚未分派任务的 c组成的链表。除此之外,池” s t x“中

还存储“”池的状态、唤醒任务处理线程的信号量以及允许的最大任务处理线程数等信息。

模式。通过仿真实验,明改进模式可以明显降低 L A表 D P操作响应时间。最后对此进行了总结和分析,对进一步改进并O eL A pn D P性能提出了展望。

O eL A所特有的“ pnD P线程池”式主要由两个算法构成,模一

是守护线程所执行的,另一个是任务处理线程执行的。 守护线程所执行的算法如下:

1 Op n DA“程池”式及其分析 eL P线模1 1实现分析 在 O eL A pn D P中,采用了独特的线程池模式。系统中有一

1 )如果“”池的状态为“完成”“停”或者等待处理的或暂,c超过了最大值, t x则该算法结束;

收稿日期式系统。

:0 6—0 2o 7—1。黄金华,士生,研领域:络与嵌入 9硕主网

第 6期

黄金华等:pn D P性能测试分析与优化 O eL A统的性能带来一定的损耗。

19 8

2 )从任务链表 l—re lt t f—

i中摘取尚未分配任务的 c; p e s t若 x未有,则创建新的 c t x并分配新的任务;该 c将 t入 po一> x插 ollp pe dig t n n_ _

lt i链表, po状态变为“ s若 ol暂停”则该算法结束;,

2 Opn AP线程池”式改进与分析 eLD“模2 1模式改进 .在设计服务器程序时,有多种程序设计范式 (模式 )。如 预先派生子进程 (线程 )每个子进程调用 A cp的并发模式和, cet预先派生子线程并由守护线程向子线程传递套接字描述字的分

3 )唤醒任务处理线程,如果已经创建的任务处理线程数小于 l _ edn—i和 l— cv—i链表元素个数之和,创建 t pn i lt t at e lt p g s p i s则新的任务处理线程。 刚被创建或唤醒的任务处理线程执行如下算法: 1 )为系统分配资源执行必要的初始化;“若池”的状态为

“停止”则算法结束;,>lp pe d n t n ig— _—

发模式等。根据 12小节对 O e L A“程池” . pn D P线模式的性能分析,并参考相关线程池模式, O eL A对 p n D P的线程池模式提出改进方案。首先预先创建一定数量的服务子线程,避免守护线程在创建或分派任务 c t同时再创建服务子线程, x的消除“线程” 创建开销对 L A D P性能带来的影响。与此类似,任务结构 c也 t x

2 )若 p o一>l _ e d glt空,跳转 5,则取 po ol t pn i _i为 p n s则 )否 ol一

lt表头元素 c,其插入 po一>l— c i链 s t将 x ol t a— p

tr ie

l t并开始执行该任务; i, s

3 )删除 po一>l— c v—i中该 c, ol t at elt p i s t并将其插入 po一 x ol> lp fe ls; t r e it_—

是守护线程在处理客户请求的时候创建的,因此为了减少任务结构 c t x创建所造成的性能损耗,以预先创建一定数量的任可

4 )当“”池状态为“暂停”且正在被处理的 c t x数大于等于

2则该线程睡眠等待守护线程唤醒, 2;,转 )5 )若“”池状态为“完成”或任务处理线程数超过最大线程

务结构 c。为了避免守护线程为所有客户请求创建或分配任 t x务结构 c, t

让守护线程从繁琐的工作中摆脱出来, x缩短 c从被 t x分配任务到被处理的时间,参考了并发线程池模式,将这种工作转嫁给任务处理线程来处理,让任务处理线程来处理与某个客

数,则算法退出;池”若“状态为“暂停”运行”则陷入睡眠等或“,待守护线程唤醒, 2。转 )

户请求有关的所有事务。针对过多锁操作带来的性能消耗,为每个任务处理线程分配“独享”的数据结构,尽量减少守护线程和任务处理线程之间的通信,如确有必要可以使用管道或 U I NX域套接字进行通信。 总之,改进的线程池模式将预先创建一定数量的服务子线

12性能分析 .如 1 1节所述, pn D P虽然也使用“程池” . O eL A线模式,并但不预先创建线程,也并不专门维护子线程的状态。守护线程与服务子(进程 )线程使用共享内存而不是管道或域套接字进行

通信。虽然在一定程度上减轻了守护线程的“管理压力”,是但新的客户连接请求导致的新的任务处理线程创建将带来额外的开销。

程;预先创建一定数量的任务结构 c;服务子线程调用 a— t让 x c cp, e t处理与该连接有关的所有事务;为每个服务子线程分配类似 po的数据结构,量减少守护线程与服务子线程的通信, ol尽 如确有必要,使用管道或 U I NX域套接字进行通信。

O eL A p n D P采用守护线程调用 acp建立与客户的连接, ce t

但与将该套接字交付给服务子线程处理与该连接有关的所有事务相比,守护线程依旧要监听该连接的套接字。当其有读或写

2 2性能测试与分析 .本小节主要测试三种线程池模式下 O e L A pn D P的性能: MoeO eO e L A d n, pn D P目前所采用的模式; Moeto与 MoeO e类似,预先创建执行事务的线 d, w d n但程;

请求,护线程需要建立相应的任务并插入“程池”对守线。O eL A pn D P而言。服务子线程与客户连接不是一一对应的,就也是说,与服务子线程通常在某段时间内只给某一特定的客户连接服务相比, p n D P的服务子线程可以为任意的客户连接 O eL A

MoeT re即上述改进的 O eL A d he, p n D P线程池模式。

在本测试中, pn D P服务器端的基本配置为 C U 1 O eL A P .

服务。这种特点在一定程度提高了任务处理线程的利用率,但是从另一个角度而言,会延迟某个连接的响应时间。

4 H主存为 1客户端的基本配置为 C U . G,存为 G Z, G; P 14主52 1G。服务器和客户端同处于一个 10 b S的局域网内。 0M/

当客户数量递增时, pnD P目前所采用的模式虽然可 O eL A以较快地与客户建立连接,是迅速增长的客户请求使得急需但处理的任务个数, po中 l— edn_i元素个数,即 ol t pn ig lt p s也急速增

O eL A pn D P运行的服务器软件采用 oe la pndp一2 3 1, . .9而客户端测试工具为 Drc rMak同时它也是这次性能测试的 B nh i ty r, eo ec—

长,另一方面也会导致同一客户请求中的任务 c在 l— e d g t x t pn i p nji链表中的间隔也越来越大。而任务处理线程是按照 FF s t IO的顺序从共享“中 l— edn—i链表中取出任务 cx执池” t p nig lt p s t并行之的,这必然会导致同一客户的任务 c t x会越来越晚地得到处理,客户请求的响应延迟也就急剧恶化。 此外, pn D P的守护线程使用 IO多路复用监听所有 O eL A/

Mak i co M k是测试服务器平台 L A r。D r t y a e r r D P性能的基准,它可以通过模拟多个客户、多个线程同时对 L A D P服务器发起事务请求进行性能测试。 D r trM k将客户端配置为若干客户、个线程。每个 i coy a e r多

线程将执行 100个 Sac 00 erh操作。D rc rM kMat将记录 i ty a sr eo r e下客户每次 L A D P操作所需要的平均延迟等来评价 L A D P服务器性能。

套接字,并需要为所有连接分配必要数据结构例如任务数据结构c, t进行一些初始化工作, x为新的连接还需做一些额外的工作,因此必然会加重守护线程的工作量,从而会延迟任务 c t x被插入 po中 l _ edn_i链表的时间,终延迟了对客户的 ol t pn i lt p g s最响应时间;另一方面,ol p是被守护线程和所有任务处理线程共

测试结果如图 1示。图 1表明, L A所从 D P操作的响应延迟来看,虽然 M d w o eT o与 M d n相处无几,总是比 Moe o eO e但 d

O e所对应的响应时间要短。总体上, o eT o n M d w对应的平均响应延迟为 18 2 9 ms而 MoeO e的为 10 8 1m, 04 .4, d n 6 .9 s性能提高 1了2%左右。这 2%性能的提高是由于 MoeT o d w预先创建了任务处理线程。 (下转第 23页) 1

享的,对此引入锁机制实现互斥访问,多的锁操作必然对系而过

第 6期

孙宁等:移动 I由方案研究 P路20 ( ) 1 6—18 04 1:7 7.

23 1

多个 G A这样可以最大限度地减少区域间切换, C,而且使 G A C处绑定信息记录不至于过大。G A处可采用最近访问最先查 C找算法。当 G A从 H C A处收到绑定信息的更新后,是否有查看该移动节点的绑定信息,如果没有把有关该移动节点的绑定记录放在绑定信息表的首部,将表中的最后一条记录删除。如并果有则更新该记录,并将新记录移至表的首部,这样可以提高查询效率。

[ 8]李晓飞.移动 I P中的微移动技术[]广东通信技术,04 2:0 J. 20 ( )2—

2 2.

[ 9]刘宏英.移动 I P路由优化[]电信工程技术与标准化,0 4 4: J. 20 ( )8 4—8 6.

(上接第 19页 ) 8

3 3安全问题 .

图 3使用 ISe安全标准 Pe

考虑到本方案相对于标准移动 I P受到安全威胁更大,如非法节点利用经过认证的注册请求消息发动重放攻击,扮合法假节点来窃取会话的攻击等等。为提高路由优化后移动 I P网络的安全性,我们采用 ISe全协定对数据进行封装。ISe包 Pe安 Pe括I P认证头( H) A协议和封装安全净荷协议 ( S ) E P。它们可以

图 1不同模式下 L A D P操作延迟时间

相比而言, d he Mo eT re的性能最高。图中测试结果表明, 在客户请求数量较少或负载较低时, d n模式下的守护 Mo eO e线程和任务处理线程并不是那么繁忙,种任务能比较及时各

地得到处理,因此虽然与 MoeT re的性能有差异, d he但并不那么显著。但正如 1 2节对 O e

L A“程池”式性能分析 . pnD P线模所描述的那样,随着负载的逐步增加, d n Mo eO e下的 O e pn LA D P性能也急剧“恶化”这从图 1可以看出, d n, MoeO e对应的 LA D P操作响应延迟急剧增加,两者之间的性能差异也越来

提供对 I P报头和净荷的认证、完整性检查、可抵赖性及完成不对I P数据包净荷的加密。IS e P e是一种标准化的能够在链路层和传输层提供安全保障的安全协议。对家乡代理 H源域总 A、代理( 3中 G A1和目标域总代理 ( 3中 G A实体间的图 C )图 C 2)通信采用 ISe中的 E P协议封装, Pe S并且选择通道模式。如图 3所示。采用通道模式可以穿越家乡网络和外地网路的防火墙。 该模型的安全问题已得到基本解决。

越显著。总体上, oeTr对应的 L A操作延迟为 60 . M d h e e DP 285 ms与 MoeO e相比,均性能提高了 4%左右。这进一 6, d n平 4步表明了,改进模式可以有效地降低 L A D P操作响应延迟,改善 O eL A pn D P性能。

4结束语

3结束语本文分析了几种典型的路由优化方案,出了他们的优缺指点,然后提出了一种改进方案。通过该路由优化方案,不仅缩短 O eL A p n D P在分布式目录服务中广泛使用,因此测试分析和改进其性能就非常有必要。本文在分析了 O eL A pn D P现有的线程池模式及其实现和性能之后,出了改进的线程池模式。提 实验表明了改进模式可以显著地提高 O eL A p n D P性能。除此之外,ah C ce的大小、 nr s的大小以及 N g E te i al法等都对 O e e算 pn LA D P性能有着重要影响,对此,在接下来的工作中将进一步研究如何优化和提高 O e L A pn D P性能。

了传输路径,而且减小了传输延迟,是移动节点离家乡代理特别距离较远而且节点在区域间频繁移动时,可显著提高移动 I P的通信效率,保证移动 I P用户的业务质量。最后对方案的安全性进行了讨论,并提出了采用 Ise安全协定保证了移动 I信 Pe P通

的安全。另外,案不需修改通信节点的协议软件,该方只需增强部分路由器的功能,就可以实现对三角路由

问题的优化,因此在实现上有较好的可行性。

考文

[1] PrisC R ueO t i tn i M b eI[ . r te - oi i- ekn . ot pi z i n o i P z] da - t m b ep m ao l f if lo t 1 . x, ne tDr t I F. 0 p i 0 t t I t me a . ET 2 00, 1 m- f 1.

[1]ht:/ w .p n a .r. t/ w w oel p og p d [2] Wa lW Kl . Lgtegt i c r ces rt o 3 h T, ie S ihw i Dr t y cs o cl . l h e o A P o VRF 2 C2 51, c, 9 7. De 1 9

[ 2]Pri . oi y u pr[] IT F 0, 9,0 e n C I M b i p o S . FR C2 2 1 6 1 . k s P l S t t E 0 9 【 3]Pri I oi y up rf v[] R C3 2, 0,. e n C.PM b i p o r P4 S . F 0 2 2 1 k s l S t t oI 2 0 4]l e .o m n移动 I[ . a s Sl o . m D o P M]北京:机械工业出版社, 0 . 2 0 0[ 5]李云,有限增加主机路由避免移动 I‘等. P‘三边路由”的方法[] J.计算机工程 20 ( ) 13—15 0 2 8:7 7.[ 6]李颖华.层结构移动 I分 P的路由研究[]微计算机应用,0 3 J. 20( ) 2—29 4:0 4 0.

[3]W ihr t esBlF nrA de i f U I RcadSe n,i ee, nrw M Rd . N X网络编程第一 v l o卷:套接口 A I第三版. P.清华大学出版社 . [4] Drco evrC rfd Pr ra c e o s ht:/ ww mn - i tr Sre et e ef m ne R pr . t/ w . id e y i i o t pc at c r/ e r p r/ d p r . o p r e o t l a/. f n f s

[5]XnWag Henn e uzn, ipK n Ir iehV r a Mes i n, n igS hl e Dl adu,Dns em . a- i f iu e n n a y i fL r me ta d An lss o DAP Pe oma c . p c a su n p o e d r r n e S e ilis e o rc e -

f

[ 7]苏晓萍.移动 I议的分析与研究[]计算机工程与应用,微 P协 J.

ig f C SG T IS 20 2 ( ) 16—1 5 nso A M I ME RC,00,8 1:5 6.

本文来源:https://www.bwwdw.com/article/l5i4.html

Top