我有一个仅供登录用户使用的 MediaWiki 安装,速度非常慢(每个请求大约持续 2.5 秒) 我经历了我发现的所有缓存和优化步骤。 我使用默认配置的 APC,因为我没有发现任何改进,所以我运行了 mediawiki 分析,但我没有完全理解输出。
forceprofile 的输出如下所示。
100.00% 2.475774 1 - -total
90.51% 2.240709 1 - Setup.php
89.56% 2.217199 1 - Setup.php-session
88.85% 2.199760 163 - LoadBalancer::getConnection
88.64% 2.194557 163 - LoadBalancer::openConnection
88.43% 2.189371 2 - DatabaseMysql::open
88.38% 2.188186 2 - dbconnect-localhost
8.02% 0.198664 1 - MediaWiki::main
6.15% 0.152351 1 - MediaWiki::finalCleanup
5.25% 0.129948 1 - OutputPage::output
5.21% 0.128936 1 - Output-skin
5.20% 0.128861 1 - SkinTemplate::outputPage
3.28% 0.081173 186 - DatabaseBase::query
2.64% 0.065307 1 - SkinTemplate::outputPage-stuff5
1.99% 0.049177 4 - query: COMMIT
1.82% 0.044994 1 - MediaWiki::performRequest
1.67% 0.041237 1 - MediaWiki::performAction
1.66% 0.041093 1 - Article::view
1.56% 0.038637 108 - LocalisationCache::getSubitem-load
1.41% 0.034958 1 - SkinTemplate::outputPage-execute
1.09% 0.026959 1 - Skin::buildSidebar
1.04% 0.025770 41 - Linker::titleAttrib
rest below 1%
分析日志中的输出如下:
Profiling data
Name Calls Total Each % Mem
-total 1 2530.972 2530.972 100.000% 5801152 ( 2530.972 - 2530.972) [0]
Setup.php 1 2269.201 2269.201 89.657% 1230737 ( 2269.201 - 2269.201) [65]
Setup.php-session 1 2246.935 2246.935 88.778% 312683 ( 2246.935 - 2246.935) [26]
LoadBalancer::getConnection 166 2213.220 13.333 87.445% 292024 ( 0.005 - 1117.286) [178]
LoadBalancer::openConnection 166 2211.142 13.320 87.363% 286279 ( 0.001 - 1117.276) [12]
DatabaseMysql::open 2 2208.200 1104.100 87.247% 13050 ( 1092.796 - 1115.404) [10]
dbconnect-localhost 2 2207.259 1103.630 87.210% 12544 ( 1092.338 - 1114.922) [0]
MediaWiki::main 1 222.392 222.392 8.787% 2675660 ( 222.392 - 222.392) [1486]
MediaWiki::finalCleanup 1 134.699 134.699 5.322% 1284487 ( 134.699 - 134.699) [981]
DatabaseBase::query 202 117.272 0.581 4.633% 342809 ( 0.079 - 32.658) [206]
OutputPage::output 1 108.740 108.740 4.296% 1280174 ( 108.740 - 108.740) [956]
Output-skin 1 103.328 103.328 4.083% 1087262 ( 103.328 - 103.328) [953]
SkinTemplate::outputPage 1 103.267 103.267 4.080% 1131051 ( 103.267 - 103.267) [952]
query: COMMIT 7 87.476 12.497 3.456% 432 ( 6.541 - 32.651) [0]
MediaWiki::performRequest 1 85.917 85.917 3.395% 1272664 ( 85.917 - 85.917) [503]
MediaWiki::performAction 1 81.878 81.878 3.235% 1184620 ( 81.878 - 81.878) [483]
Article::view 1 59.397 59.397 2.347% 679673 ( 59.397 - 59.397) [258]
SkinTemplate::outputPage-stuff5 1 55.888 55.888 2.208% 456139 ( 55.888 - 55.888) [400]
LocalisationCache::getSubitem-load 107 28.478 0.266 1.125% 54868 ( 0.240 - 0.468) [428]
-overhead-total 1570 27.168 0.017 1.073% 1076064 ( 27.168 - 27.168) [1570]
SkinTemplate::outputPage-execute 1 26.111 26.111 1.032% 30494 ( 26.111 - 26.111) [398]
DeferredUpdates::doUpdates 1 25.015 25.015 0.988% 377 ( 25.015 - 25.015) [16]
Skin::buildSidebar 1 21.318 21.318 0.842% 81176 ( 21.318 - 21.318) [218]
ParserCache::get 1 19.755 19.755 0.781% 1585 ( 19.755 - 19.755) [22]
DynamicSidebar::modifySidebar 1 18.910 18.910 0.747% 69284 ( 18.910 - 18.910) [192]
Linker::titleAttrib 40 18.445 0.461 0.729% 76664 ( 0.041 - 1.041) [313]
CategoryViewer::getHTML 1 17.666 17.666 0.698% 244568 ( 17.666 - 17.666) [218]
query: SELECT lc_value FROM `wiki_lNn_cache` WHERE lc_lang = 'X' LIMIT N 129 15.079 0.117 0.596% 240757 ( 0.086 - 0.513) [2]
LocalisationCache::getItem-load 16 13.923 0.870 0.550% 272404 ( 0.259 - 5.256) [100]
SkinTemplate::outputPage-stuff4 1 11.899 11.899 0.470% 330753 ( 11.899 - 11.899) [62]
Setup.php-globals 1 11.758 11.758 0.465% 567318 ( 11.758 - 11.758) [24]
-overhead-internal 1570 11.512 0.007 0.455% 351680 ( 0.006 - 0.046) [0]
ResourceLoader::makeModuleResponse 2 11.067 5.533 0.437% 238877 ( 4.679 - 6.388) [36]
我不知道为什么我的 setup.php、loadbalancer 和 db 这么慢?有没有人建议改进这些东西的性能。
编辑: 我改回没有缓存的配置,分析输出如下所示:
Profiling data
Name Calls Total Each % Mem
-total 1 2264.308 2264.308 100.000% 18818800 ( 2264.308 - 2264.308) [0]
LoadBalancer::getConnection 171 1914.577 11.196 84.555% 873694 ( 0.010 - 969.956) [183]
LoadBalancer::openConnection 171 1912.571 11.185 84.466% 863369 ( 0.002 - 969.939) [12]
DatabaseMysql::open 2 1904.139 952.070 84.094% 13043 ( 941.427 - 962.713) [10]
dbconnect-localhost 2 1903.117 951.559 84.049% 12576 ( 940.917 - 962.201) [0]
MediaWiki::main 1 1168.946 1168.946 51.625% 8339081 ( 1168.946 - 1168.946) [1546]
MediaWiki::performRequest 1 1052.551 1052.551 46.484% 4786767 ( 1052.551 - 1052.551) [728]
SpecialPageFactory::executePath 1 1047.566 1047.566 46.264% 4567696 ( 1047.566 - 1047.566) [717]
Setup.php 1 1045.216 1045.216 46.160% 7760889 ( 1045.216 - 1045.216) [55]
Special:Version 1 1044.117 1044.117 46.112% 4018885 ( 1044.117 - 1044.117) [716]
Setup.php-globals 1 1011.005 1011.005 44.650% 4713595 ( 1011.005 - 1011.005) [30]
LocalisationCache::getItem-load 15 990.768 66.051 43.756% 1424628 ( 0.265 - 979.699) [102]
MessageCache::load 1 943.255 943.255 41.658% 14271 ( 943.255 - 943.255) [14]
MessageCache::load-fromcache 1 942.883 942.883 41.641% 13740 ( 942.883 - 942.883) [13]
MediaWiki::finalCleanup 1 115.499 115.499 5.101% 3464276 ( 115.499 - 115.499) [816]
OutputPage::output 1 113.857 113.857 5.028% 3377273 ( 113.857 - 113.857) [809]
Output-skin 1 102.706 102.706 4.536% 2424168 ( 102.706 - 102.706) [806]
SkinTemplate::outputPage 1 102.656 102.656 4.534% 2464206 ( 102.656 - 102.656) [805]
SkinTemplate::outputPage-stuff5 1 58.550 58.550 2.586% 1731893 ( 58.550 - 58.550) [346]
最佳答案
从您发布的分析数据来看,罪魁祸首显然是打开的数据库连接非常慢,查询本身似乎运行得足够快。为什么会这样是一个有趣的问题:
max_connections 太低并且处于空闲状态
当客户拼命排队等待接通时?关于mysql - MediaWiki 分析输出解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16719023/
为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar
我正在使用puppet为ruby程序提供一组常量。我需要提供一组主机名,我的程序将对其进行迭代。在我之前使用的bash脚本中,我只是将它作为一个puppet变量hosts=>"host1,host2"我将其提供给bash脚本作为HOSTS=显然这对ruby不太适用——我需要它的格式hosts=["host1","host2"]自从phosts和putsmy_array.inspect提供输出["host1","host2"]我希望使用其中之一。不幸的是,我终其一生都无法弄清楚如何让它发挥作用。我尝试了以下各项:我发现某处他们指出我需要在函数调用前放置“function_”……这
这是一道面试题,我没有答对,但还是很好奇怎么解。你有N个人的大家庭,分别是1,2,3,...,N岁。你想给你的大家庭拍张照片。所有的家庭成员都排成一排。“我是家里的friend,建议家庭成员安排如下:”1岁的家庭成员坐在这一排的最左边。每两个坐在一起的家庭成员的年龄相差不得超过2岁。输入:整数N,1≤N≤55。输出:摄影师可以拍摄的照片数量。示例->输入:4,输出:4符合条件的数组:[1,2,3,4][1,2,4,3][1,3,2,4][1,3,4,2]另一个例子:输入:5输出:6符合条件的数组:[1,2,3,4,5][1,2,3,5,4][1,2,4,3,5][1,2,4,5,3][
我正在阅读SandiMetz的POODR,并且遇到了一个我不太了解的编码原则。这是代码:classBicycleattr_reader:size,:chain,:tire_sizedefinitialize(args={})@size=args[:size]||1@chain=args[:chain]||2@tire_size=args[:tire_size]||3post_initialize(args)endendclassMountainBike此代码将为其各自的属性输出1,2,3,4,5。我不明白的是查找方法。当一辆山地自行车被实例化时,因为它没有自己的initialize方法
我想使用spawn(针对多个并发子进程)在Ruby中执行一个外部进程,并将标准输出或标准错误收集到一个字符串中,其方式类似于使用Python的子进程Popen.communicate()可以完成的操作。我尝试将:out/:err重定向到一个新的StringIO对象,但这会生成一个ArgumentError,并且临时重新定义$stdxxx会混淆子进程的输出。 最佳答案 如果你不喜欢popen,这是我的方法:r,w=IO.pipepid=Process.spawn(command,:out=>w,:err=>[:child,:out])
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co
我想知道Ruby用来在命令行打印这些东西的输出流:irb(main):001:0>a="test"=>"test"irb(main):002:0>putsatest=>nilirb(main):003:0>a=>"test"$stdout是否用于irb(main):002:0>和irb(main):003:0>?而且,在这两次调用之间,$stdout的值是否有任何变化?另外,有人能告诉我打印/写入这些内容的Ruby源代码吗? 最佳答案 是的。而且很容易向自己测试/证明。在命令行试试这个:ruby-e'puts"foo"'>test.
我在使用自定义RailsFormBuilder时遇到了问题,从昨天晚上开始我就发疯了。基本上我想对我的构建器方法之一有一个可选block,以便我可以在我的主要content_tag中显示其他内容。:defform_field(method,&block)content_tag(:div,class:'field')doconcatlabel(method,"Label#{method}")concattext_field(method)capture(&block)ifblock_given?endend当我在我的一个Slim模板中调用该方法时,如下所示:=f.form_field:e
考虑一下:现在这些情况:#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2我需要用其他字符串输出URL。我如何保证&符号不会被转义?由于我无法控制的原因,我无法发送&。求助!把我的头发拉到这里:\编辑:为了澄清,我实际上有一个像这样的数组:@images=[{:id=>"fooid",:url=>"http://
如thisquestion,当在其自己的赋值中使用未定义的局部变量时,它的计算结果为nil。x=x#=>nil但是当局部变量的名称与现有的方法名称冲突时,就比较棘手了。为什么下面的最后一个示例返回nil?{}.instance_eval{a=keys}#=>[]{}.instance_eval{keys=self.keys}#=>[]{}.instance_eval{keys=keys}#=>nil 最佳答案 在Ruby中,因为可以在没有显式接收器和括号的情况下调用方法,所以在局部变量引用和无接收器无参数方法调用之间存在语法歧义:f