gpt4 book ai didi

java - Java-MySQL高负载应用程序崩溃

转载 作者:行者123 更新时间:2023-12-03 17:41:16 25 4
gpt4 key购买 nike

我的html刮板有问题。 Html-scraper是使用HtmlUnit用Java编写的多线程应用程序,默认情况下它以128个线程运行。简而言之,它的工作方式如下:从大文本文件中获取站点url,ping url,如果可以访问-解析站点,找到特定的html块,将所有url和块信息(包括html代码)保存到数据库中相应的表中,然后转到下一个站点。数据库是mysql 5.1,有4个InnoDb表和4个 View 。表具有用于表连接的字段的数字索引。我还有一个Web界面,用于浏览和搜索解析后的数据(对于搜索,我使用带有增量索引的Sphinx),该界面写在CodeIgniter上。

服务器配置:

CPU: Type Xeon Quad Core X3440 2.53GHz
RAM: 4 GB
HDD: 1TB SATA
OS: Ubuntu Server 10.04

一些mysql配置:
key_buffer = 256M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 128
max_connections = 400
table_cache = 64
query_cache_limit = 2M
query_cache_size = 128M

Java机器以默认参数运行,但下一个选项除外:-Xms1024m -Xmx1536m -XX:-UseGCOverheadLimit -XX:NewSize = 500m -XX:MaxNewSize = 500m -XX:SurvivorRatio = 6 -XX:PermSize = 128M -XX:MaxPermSize = 128m- XX:ErrorFile = / var / log / java / hs_err_pid_%p.log

当数据库为空时,抓取器每秒处理18个URL,并且足够稳定。但是经过2次弱化后,当urls表包含384929条记录(占所有已处理url的25%)并占用8.2Gb时,java应用程序开始运行非常缓慢,每1-2分钟崩溃一次。我猜想原因是mysql,无法处理不断增长的负载(解析器,该解析器对每个处理的url执行 2+4*BLOCK_NUMBER查询;狮身人面像,其每10分钟更新一次增量索引;我不考虑使用网络界面,因为它仅由一个人使用),也许重建索引的速度很慢?但是mysql和scraper日志(也包含所有未捕获的异常)为空。你怎么看待这件事?

最佳答案

我建议运行以下命令只是为了检查一些状态。.将输出放在这里也会有所帮助:

  • dmesg
  • top检查每个进程的驻留内存与虚拟内存
  • 关于java - Java-MySQL高负载应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8894431/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com