首页 > 解决方案 > 是什么导致从笔记本电脑程序中爬网速度变慢?

问题描述

我有一个项目,我设法从一个外包的服务器中保存下来,并设法让它大部分工作在我家里的一台笔记本电脑上。它具有 OS Win 8.1r、VS 2017、SQL Server Express 2017,并且我在 C# .NET 版本 4.6.1 中编写了我在我的应用程序中使用的 DLL。

我目前每天晚上在午夜手动运行一些存储过程来填充一些统计表,因为 SQL Server Express 中不存在 MS 代理,然后运行一个索引维护过程,在我手动重新启动 BOT 之前重新构建或删除索引并重建统计信息在午夜刚过的命令提示符下。

但是我注意到,如果我将笔记本电脑开着 3-5 天,每次跑步所需的时间(平均),40 场比赛和每场比赛 5-20 名跑步者通过代理会变得越来越慢。我现在刚刚重新启动,因为昨晚从凌晨 1 点到 11 点爬行,使用正则表达式扫描以获取信息并保存到 DB 比赛和跑步者。

但是,如果我查看我在每场新比赛中存储的 CreateDate 时间,我可以看到一个模式..

昨天花了 10 小时完成了 40 场比赛和跑步者,星期六花了 4 小时完成了 50 场比赛和跑步者 星期五 3 小时 49 场比赛 星期四 5 小时 42 场比赛 星期三 5 小时 32 场比赛 星期二 1 小时 36 场比赛

显然,随着时间的推移,越来越多的比赛和跑步者存储在数据库中,因此从索引、存储等中检索的时间会变长,但重新启动后它很快就哈利,我今晚刚刚重新启动它,重建索引然后放手它已经在 7 分钟内完成 7 场比赛。

显然我没有服务器来安装它,最后一次尝试导致一个老老板把它放在一个不允许访问在线博彩网站的法国服务器上,而我的 BOT 使用 Betfair API。

它可以在我的笔记本电脑上运行,除了 - 让所有比赛和跑步者进入数据库的速度随着时间的推移而延长。尽管我每晚都会执行所有清理操作(删除旧的日志消息、锁定和重建统计表,然后再进行重新索引/碎片整理作业),但我将其保留的时间越长,花费的时间就越长。

- 出于某种原因,我在事后调试后输出调试消息的日志文件,例如,我查找 SQL 错误、连接错误、代理问题、RegEx 错误,然后我通过控制台应用程序将其输出到我目前正在使用 DLL 的控制台应用程序中C:\programdata\myproj\logfile.txt 中的日志文件 - 它在写入文件时具有权限,但是一旦工作结束,如果我尝试在标准编辑器 - Editplus 中打开它,它只会打开一个空白文档。如果我首先在记事本中打开它,我可以看到所有的调试,然后我可以将它复制粘贴到一个空白的 Editplus 文档中。

它以前从未在我的工作电脑上这样做过,权限没问题,正在写入文件,打开日志文件时我没有收到任何“权限被拒绝”或其他 I/O 错误,如果我不这样做,它就是空的不要在记事本中打开它。

所以我想知道随着时间的推移,随着时间的推移,正在发生什么样的动作来减慢这项工作,而重启修复。我知道当我们的 PC 在工作中遇到错误或问题时,我们曾经从我们的技术人员那里得到的一句老话“您是否尝试过再次打开和关闭它”——出于某种原因,这确实解决了很多问题。

我只想知道在几天内可能会发生什么样的问题来减慢它的速度,我可能会自动执行清理工作,这样它就不会发生。过去几个月,我每天都在远程连接到服务器的工作 PC 上运行完全相同的代码,然后由于 Windows 更新而被迫重新启动。因此,我在工作中一直开着电脑的坏习惯从来没有这样做过。

磁盘是否碎片化 - 为什么在重新启动后不需要磁盘碎片整理来解决它。注册表?随着时间的推移,重新启动修复的情况可能会变得越来越糟。或者是因为我使用的是 MS SQL Express 2017 并且它写入的文件存在一些 I/O 问题,随着时间的推移会变慢。

我只想让我的笔记本电脑在一天中的特定时间运行这个 BOT,而不用担心它需要 11 个小时才能完成第一个导入工作。

现在37分钟过去了,跑了20分钟,已经导入了15场比赛和跑步者,大约是总数的四分之一,所以今晚应该在大约一个小时内完成,我刚刚重新启动了我的笔记本电脑,什么都没有否则,它已经从昨天晚上的10个小时加速了?

什么可能会减慢爱人的时间,我可以修复它吗?

标签: c#.netweb-crawlersql-server-express

解决方案


推荐阅读