繁体   English   中英

Joomla:死链接后,很多查询使我的网站性能变差

[英]Joomla: Lot of queries make my site-performance bad after going to dead-link

自从去年从旧的joomla 1.5站点迁移到3.x以来,我遇到了疯狂的性能问题:经过数小时和夜间的工作并寻找原因后,第一次获取的时间非常长(> 1000 ms),我发现我网站上的某些操作会产生很多查询。

  1. (也许)机器人在我的网站上经常调用完全不相关的综合浏览量,这会产生很多查询。例如:这是我的印象链接: http ://www.hdsports.at/impressum/机器人称这些链接为:/ impressum / images /joomgallery/thumbnails/ballsport_4/faustball_47/bundesliga_2012-02_20120212_1204309660.jpg我在印象派下没有菜单点。 我没有哪个机器人(或其他)称为这些链接。

在我的“ / logs”文件夹中,我从站点上的每个综合浏览量生成sql文件(github.com/joomla/joomla-cms/pull/6202),因此我查看了“ HDsports.at_impressum108.sql”文件我称这些为死链接。

而我在sql文件上看到的。 超过5000个查询:从ngie_contentitem_tag_map AS中选择​​m.tag_id,t。*。在m.tag_id = t.id的位置m.type_alias ='com_content.article'和m.content_item_id = 8662 AND t .published = 1 AND t.access IN(1,1,5);

我的商品编号的每个查询都有一个查询。

在这些查询中的第一个查询之前一行,有以下查询:

选择a.id,a.title,a.alias,a.intext,a.fulltext,a.checked_out,a.checked_out_time,a.catid,a.created,a.created_by,a.created_by_alias,修改后的情况='0000-00-00 00:00:00'然后创建一个已修改的ELSE a。修改后的END,一个a.modified_by,uam.name作为Modifyed_by_name,当a.publish_up ='0000-00-00 00:00时:00'然后将ELSE a.publish_up END创建为publish_up,a.publish_down,a.images,a.urls,a.attribs,a.metadata,a.metakey,a.metadesc,a.access,a.hits ,a.xreference,a.featured,a.language,LENGTH(a.fulltext)AS阅读更多,当badcats.id不为null的情况下,然后用0 ELSE a.state END AS state,c.title AS category_title,c.path AS category_route,c.access AS category_access,c.alias AS category_alias,当a.created_by_alias>''THEN a.created_by_alias ELSE ua.name END AS author,ua.email AS author_email,parent.title作为parent_title,parent.id as parent_id,parent.path作为parent_route,parent.alias作为parent_alias,ROUND(v.rating_sum / v.rating_count,0)AS评分,v.rat ing_count为rating_count,c。已发布,当badcats.id为null时,则用CASE形式发布ELSE 0 END AS parent_published从ngie_content作为LEFT JOIN ngie_content_frontpage AS fp ON fp.content_id = a.id LEFT JOIN ngie_categories AS c ON c.id = a.catid LEFT JOIN ngie_users AS UA上ua.id = a.created_by LEFT JOIN ngie_users AS uam ON上uam.id = a.modified_by LEFT JOIN ngie_categories作为父级上parent.id = c.parent_id LEFT JOIN ngie_content_rating AS v ON a .id = v.content_id左外部联接(从id.ngie_categories中选择cat.id作为id,从cat.inngie.categories中作为id联接,在parent.lft和parent.rgt之间的cat.lft中,parent.extension ='com_content'和parent.published!= 1 GROUP BY cat.id)作为badcats.id = c.id上的badcats在a.access IN(1,1,5)和c.access IN(1,1,5)的情况下,当badcats.id为null时a.state ELSE 0 END = 1 AND(a.publish_up ='0000-00-00 00:00:00'或a.publish_up <='2015-04-13 23:49:52')AND(a.publish_down ='0000-00-00 00:00:00'或a.publish_down> ='2015- 04-13 23:49:52')在a.publish_up ='0000-00-00 00:00:00'的情况下按c.lft进行订单,然后a。创建了ELSE a.publish_up END DESC,a。创建了;

除了显示所有文章以外,它没有别的意思,而我的人数超过了5.000。

好的,从逻辑上讲,在查询所有5.000文章之前,有5.000个“ SELECT m.tag_id”查询正在运行。

但是问题是:我没有找到解决该问题的解决方案。 我不知道为什么或产生这些“ SELECT”查询的原因。

当我查看“ log /”顺序时,大多数时候每分钟都会生成带有这些缓慢查询的bot(或其他任何东西)大文件。 大多数时候,它是我的“ HDsports.at_start1823.sql”文件-这就是我的首页。 但是仅当从死链接重定向到首页时。 当我直接致电首页(或印象派,或我网站上的任何其他页面)时,没有这些慢查询。

我的怀疑是,这些查询对我的数据库造成了很大的负担,并使我的网站变得如此缓慢。

  1. 当我将一个新文章保存在具有1.000现有文章的类别中时,保存时间为2分钟。 当我以“ log /”顺序打开“ HDsports.at_com_contentedit” -sql-File时,有很多这样的查询:

更新ngie_content SET排序= 1 WHERE id ='10403'; 更新ngie_content SET排序= 2 WHERE id ='10293';

对于这些类别中的每个现有商品编号,都有一个查询将商品1的编号设置得更高。 编号为“ 10403”的文章在0之前,现在转到1。编号为“ 10293”的文章从1到2。依此类推。 这些正常吗?

我做了一个新的Joomla安装,仅导入了我的文章和类别(使用J2XML),然后我又用1000个现有文章再次保存了该类别中的文章,等待时间也为2分钟。

所以我问我,为什么我是唯一有这些问题的joomla用户? 我认为许多joomla用户都拥有超过1.000篇文章的类别,但我没有发现有关这些问题的任何讨论...

如果有人看我的文件:我已将其上传到我的服务器上: http : //www.hdsports.at/slow-queries.zip

对不起,我的长篇文章。 我希望任何人都有时间阅读所有内容,也许可以帮助解决这些问题。

汤姆,奥地利,敬上! 现在已经晚了,我应该去睡觉;)

在进行任何核心优化之前,您应该确保所有表都使用InnoDB,并且MySQL已针对InnoDB数据库进行了优化 -您可以在my.cnf文件中进行一些简单的设置更改,这将使您的网站正常运行。 如果仍然有问题,则应考虑使用功率更高的服务器(确保服务器具有大量内存并具有SSD驱动器),如果其他所有方法均失败,则应继续优化内核,但是我怀疑它不必去做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM