我知道这在不知道完整代码是什么的情况下本质上是一个很难回答的问题。
下面是代码的摘要:
但一般来说,是什么导致请求的曲线如此不平滑?我没有太多的处理,所以我认为他们基本上会在并发请求下发出尽可能多的请求。此外,我已将并发请求数设置为 256,并且每个 IP 的请求数 = 1,因此不应该是因为任何特定网站。另一个有趣的事情是它开始很快,然后变慢。我可以理解,因为缓慢的请求在系统中停留的时间更长,并拉低了平均值。
任何想法都会受到欢迎。

[scrapy.crawler] Overridden settings: {'AUTOTHROTTLE_ENABLED': True, 'BOT_NAME': 'stack', 'CONCURRENT_REQUESTS': 256, 'CONCURRENT_REQUESTS_PER_DOMAIN': 1, 'CONCURRENT_REQUESTS_PER_IP': 1, 'DEPTH_LIMIT': 3, 'DEPTH_PRIORITY': 1, 'DOWNLOAD_DELAY': 1, 'LOG_ENABLED': False, 'LOG_LEVEL': 'INFO', 'MEMUSAGE_LIMIT_MB': 950, 'NEWSPIDER_MODULE': 'stack.spiders', 'REACTOR_THREADPOOL_MAXSIZE': 30, 'SCHEDULER_DISK_QUEUE': 'scrapy.squeues.PickleFifoDiskQueue', 'SCHEDULER_MEMORY_QUEUE': 'scrapy.squeues.FifoMemoryQueue', 'SPIDER_MODULES': ['stack.spiders'], 'STATS_CLASS': 'sh_scrapy.stats.HubStorageStatsCollector', 'TELNETCONSOLE_HOST': '0.0.0.0',}
Run Code Online (Sandbox Code Playgroud)
更新
我尝试将并发请求设置为 inf,这解决了线性问题,但产生了次要问题。

基于此更新,更明显的是什么限制了蜘蛛?
但是,现在计划的请求比实际请求高出约 20%,导致内存使用量随着程序的继续而增长。有没有办法删除老化的请求对象,以便内存使用量不会随着时间的推移而增长?