天道酬勤,学无止境

Net::HTTP 对 HTTPS 请求的响应极慢(Net::HTTP extremely slow responses for HTTPS requests)

问题

出于某种原因,在我的开发机器上,我对通过 Net::HTTP 执行的 HTTPS 请求的响应非常非常缓慢。 我试过 RestClient 和 HTTParty ,他们都有同样的问题。 它似乎是从哪里冒出来的。 我已经提出了数百次这些请求而没有问题,但今天它们的速度慢得令人难以忍受。

pry(main)> puts Time.now; HTTParty.get('https://api.easypost.com/v2/addresses'); puts Time.now;
2015-04-29 08:07:08 -0500
2015-04-29 08:09:39 -0500

如您所见,响应需要 2.5 分钟。 不仅仅是这个 EasyPost API URL。 我已经向我知道可以连接到的服务器(https://google.com、https://weather.com 等)尝试了许多 SSL 请求,它们都导致相同的行为。 此外,我注意到从 HTTP 重定向到 HTTPS 的请求也会发生同样的情况。 现在,检查一个非 ssl 请求:

pry(main)> puts Time.now; HTTParty.get('http://lookitsatravis.com'); puts Time.now;
2015-04-29 08:12:22 -0500
2015-04-29 08:12:22 -0500

瞬间。 是什么赋予了? 我猜这是 Ruby 和 OpenSSL 之间的某个配置问题。 我已经重新安装了两者(使用 Ruby 2.2.1 和 OpenSSL 1.0.2a),并且我正在使用 OS X Yosemite 10.10.2 来获得它的价值。 重新安装了我所有的宝石,但问题仍然存在。 我尝试更改我的 DNS 设置以防万一,但没有骰子。 是否还有其他地方可以查看或可以更改任何配置来解决此问题?

回答1

问题不在于 Ruby 或 OpenSSL 或任何上述库。 问题是我的 MacBook 上没有解析 IPv6 地址。 DNS 查找首先返回 IPv6 地址,因此库尝试连接到该地址,直到超时,然后它们连接到正常工作的 IPv4 地址。

为 OS X Yosemite 10.10.2 禁用 IPv6 对我有用。 这并不理想,但在我确定另一种解决方案之前,它可以工作。

networksetup -setv6off "Wi-Fi"

感谢@SteffenUllrich 为我指明了这个方向。

回答2

为我解决问题的是禁用防病毒软件

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Django Rest Framework分页计数极慢(Django Rest Framework pagination extremely slow count)
    问题 我在 Django Rest 框架中打开了分页,它似乎非常慢。 Count 看起来像是罪魁祸首,由于表中有数百万行,因此每次返回都要花费数百毫秒。 我使用 postgresql 作为数据库。 有没有办法不计算行数并仍然使用分页? 如果我手动过滤查询集,则在启用此功能之前性能很好。 回答1 覆盖分页类的get_paginated_response方法,并且不包括计数。 您可以参考PageNumberPagination类的基本实现来查看您应该返回的内容。 from rest_framework.pagination import PageNumberPagination from collections import OrderedDict # requires Python 2.7 or later class PageNumberPaginationWithoutCount(PageNumberPagination): # Set any other options you want here like page_size def get_paginated_response(self, data): return Response(OrderedDict([ ('next', self.get_next_link()), ('previous', self.get
  • HttpWebRequest非常慢!(HttpWebRequest is extremely slow!)
    问题 我正在使用开放源代码库连接到我的Web服务器。 我担心网络服务器的运行速度非常慢,然后我尝试在Ruby中进行简单测试,得到了这些结果 Ruby程序:10个HTTP GET的2.11秒 Ruby程序:100个HTTP GET的18.13秒 C#库:10个HTTP GET的20.81秒 C#库:用于100个HTTP GET的36847.46秒 我已剖析并发现问题在于此功能: private HttpWebResponse GetRawResponse(HttpWebRequest request) { HttpWebResponse raw = null; try { raw = (HttpWebResponse)request.GetResponse(); //This line! } catch (WebException ex) { if (ex.Response is HttpWebResponse) { raw = ex.Response as HttpWebResponse; } } return raw; } 标记行本身需要1秒钟才能完成,而发出1个请求的红宝石程序则需要0.3秒。 我也在127.0.0.1上进行了所有这些测试,因此网络带宽不是问题。 是什么原因导致这种巨大的放缓? 更新 查看更改后的基准结果。 我实际上测试了10个GET,而不是100个
  • 极慢的 HHVM、Wordpress、Nginx(extremely slow HHVM, Wordpress, Nginx)
    问题 我可能做错了什么,但我正在 php-fpm wordpress 设置和 HHVM wordpress 设置之间进行一些测试。 我听说并看到了许多来自 HHVM 的令人振奋的结果,但我对得到的结果感到震惊。 使用以下 apache 测试命令,我从 php-fpm 获得的性能比 HHVM 高得多。 ab -n1000 http://127.0.0.1:8080/ 对于 php-fpm,我每秒收到 109.98 个请求。 不幸的是,对于我来说,HHVM 每秒只能收到大约 12.33 个请求。 这些测试是在标准的全新 Wordpress 安装上完成的。 我的配置一定有问题。 我只需要一双新的眼睛,看看我是否做错了什么。 设置 来自我本地 Macbook 的 Vagrant 实例。 Ubuntu 服务器 14.04.1 LTS 1GB RAM 1 CPU Nginx MySQL HHVM 配置 pid = /var/run/hhvm/pid hhvm.server.file_socket=/var/run/hhvm/hhvm.sock hhvm.server.type = fastcgi hhvm.server.default_document = index.php hhvm.log.level = Warning hhvm.log.always_log_unhandled
  • Visual C# 2010 Express 调试器异常处理速度极慢(Visual C# 2010 Express extremely slow exception handling from debugger)
    问题 使用 Visual C# 2010 Express,当我抛出异常时,调试器在用户未处理的异常上中断大约需要一分半钟的时间。 在此期间,我正在调试的应用程序和 Visual Studio 完全没有响应,并且VCSExpress.exe处理器使用率跃升至 12-14%。 计算机的其余部分(鼠标、其他应用程序等)保持响应。 Visual Studio 并非完全无法使用,但从调试器运行时它肯定会减慢我的应用程序的速度。 我还没有找到放缓的真正根源。 这发生在启动时,并且不会随着时间的推移变得更糟。 我已经禁用了我的防病毒软件 (eset nod32 v7) 并且没有安装任何扩展。 我的 CPU 是 Intel Core i7 740QM @ 1.73GHz(四核超线程)。 操作系统是 Windows 7 专业版。 我已将 Visual C# 2010 Express 更新为 SP1(版本 10.0.40219.1 SP1Rel)。 我的硬盘没有通过 SMART 显示警告标志 我有两个用 WPF 编写的非常简单的测试场景。 在第一个场景中,我只是在单击按钮时抛出异常: private void button1_Click(object sender, RoutedEventArgs e) { throw new InvalidOperationException(); }
  • IIS 7.5 (Windows 7) 下的 ASP.NET 网站运行速度极慢(ASP.NET websites under IIS 7.5 (Windows 7) running extremely slow)
    问题 我刚刚在台式电脑上安装了 Windows 7 x64 Ultimate。 我安装了 IIS、Visual Studio 2008、注册了 ASP.NET 等。 我有这个 ASP.NET 3.5 网站,我正在这个新的 IIS 上运行非常慢。 在 STA 和 PROD 服务器(Windows 2003 Server)以及我的旧 XP/IIS 5.1 上,一切运行顺利。 通常需要 1-2 秒才能加载的页面需要 8 秒!!! 我在 IIS 论坛上看到了这篇文章。 它说明了有关 Vista/7 的一些信息,而不是池连接(只是为了让您知道,该网站在本地运行,但它连接到远程服务器上托管的 SQL Server 2005)。 似乎“开始加载”页面需要一段时间......我的意思是,我单击刷新并停留几秒钟“等待本地主机”......然后当它得到响应时,它会正常加载整个页面...... . 我不知道如何强制 Win7/IIS7.5 池化数据库连接。 编辑:我创建了一个新的空 ASP.NET Web 应用程序来查看问题是否也会发生。 答案是否定的,它响应速度快,默认页面为空。 也许与数据库连接有关。 我会做进一步的测试。 这应该是一种修复它的方法...... 编辑 2:调试应用程序我注意到延迟发生在 .NET 代码(Page_Load 等)的执行之后......所以当 IIS 将页面提供给浏览器时
  • Intellij IDEA 中 Kotlin 项目的自动完成和代码分析速度极慢(Extremely slow in autocompletion & code analysis for Kotlin projects in Intellij IDEA)
    问题 我们有一个关于 IDEA 的项目,它由几个中等大小的 Java 包和一个非常小的 Kotlin 包(5 个文件)组成。 我注意到任何 Java 包的性能都很好,但对于非常小的 Kotlin 包,它在自动完成、代码分析和编译方面要慢 10 倍。 自动完成有时会很慢,以至于弹出窗口无法加载所有方法,并且必须逐步加载几个 API。 每次我们的开发人员输入一个单词并等待自动完成时,预期的自动完成显示大约需要 2-5 秒。 有时自动完成太慢而无法显示任何内容,我们不得不取消单词并重新输入并等待。 在代码分析中也会出现同样的缓慢。 这极大地影响了我团队的生产力。 从我们的研究来看,这似乎是一个众所周知的长期问题。 这也发生在我们的另一个小项目中。 我想知道我们可以做些什么来解决这个问题? 谢谢。 Kotlin 插件是最新的,版本:1.1.3-release-IJ2017.2-2 Intellij 也是最新版本,2017 2.1(建于 2017 年 7 月 31 日) 回答1 您快照中可见的问题已在 Kotlin 1.1.4 中解决。 在撰写本文时,它可以作为 EAP(早期访问预览)版本提供; 最终版本将很快发布(并与 IntelliJ IDEA 2017.2.2 捆绑)。 回答2 在 Kotlin 1.3.50 中仍然发生。 通过在Settings > Editor > General
  • EMR/Spark 的 S3 写入时间极慢(Extremely slow S3 write times from EMR/ Spark)
    问题 我写信是想看看是否有人知道如何通过在 EMR 中运行的 Spark 加快 S3 写入时间? 我的 Spark 作业需要 4 个多小时才能完成,但是集群仅在前 1.5 小时内处于负载状态。 我很好奇 Spark 一直在做什么。 我查看了日志,发现了许多s3 mv命令,每个文件一个。 然后直接查看 S3,我看到我的所有文件都在_temporary目录中。 其次,我担心我的集群成本,看来我需要为这个特定任务购买 2 小时的计算时间。 但是,我最终购买了 5 个小时。 我很好奇 EMR AutoScaling 在这种情况下是否可以帮助降低成本。 一些文章讨论了更改文件输出提交者算法,但我对此收效甚微。 sc.hadoopConfiguration.set("mapreduce.fileoutputcommitter.algorithm.version", "2") 写入本地 HDFS 很快。 我很好奇发出 hadoop 命令将数据复制到 S3 是否会更快? 回答1 您看到的是 outputcommitter 和 s3 的问题。 提交作业在 _temporary 文件夹上应用fs.rename并且由于 S3 不支持重命名,这意味着单个请求现在正在将所有文件从 _temporary 复制和删除到其最终目的地.. sc.hadoopConfiguration.set("mapreduce
  • Python中稀疏LIL矩阵中的求和行运算速度极慢(Extremely slow sum row operation in Sparse LIL matrix in Python)
    问题 我用 Python 编写了这段代码,它给出了预期的结果,但速度非常慢。 瓶颈是对 scipy.sparse.lil_matrix 的多行求和。 我怎样才能让它快? # D1 is a 1.5M x 1.3M sparse matrix, read as scipy.sparse.lil_matrix. # D2 is a 1.5M x 111 matrix, read as numpy.array # F1 is a csv file, read using csv.reader for row in F1: user_id = row[0] clust = D2[user_id, 110] neighbors = D2[ D2[:, 110] == clust][:,1] score = np.zeros(1300000) for neigh in neighbors: score = score + D1 [neigh, :] # the most expensive operation toBeWritten = np.argsort(score)[:,::-1].A[0,:] 如果还有其他不太理想的东西,请告诉我。 回答1 首先是一个非常小的矩阵的演示 In [523]: idx=np.arange(0,8,2) In [526]: D=np.arange(24)
  • MySQL工作台表数据导入向导速度极慢(MySQL workbench table data import wizard extremely slow)
    问题 我需要将一个包含 2000 万行和 2 列的 csv 文件导入数据库,但是当我尝试使用 MySQL Workbench 的数据导入向导执行此操作时,速度非常慢,可能需要 1 个月才能完成,查看进度酒吧。 我希望必须有一些更快的方法来做到这一点。 回答1 始终使用Load Data Infile作为大量数据集的第一次尝试。 加载数据 Infile 上的 Mysql 手册页。 为这个问题写了几个答案,但要进行同行比较,请参阅此人的问题和我的答案以及他对 Workbench 与 Load Data Infile 的时间比较。 回答2 这是一个替代方案。 将您的 CSV 数据转储到 sql 脚本中,您需要为此写下一些代码。 基本上,您的 csv 数据将转换为类似于以下命令INSERT INTO TABLE_NAME values(1,2),(1,3),....; 现在使用 MySQL shell 脚本并使用SOURCE命令 mysql> source C:/Users/Desktop/sql scripts/script.sql 与直接导入数百万条记录的 CSV 文件相比,您的数据导入速度更快。 回答3 如果您不想编写代码,我建议您尝试另一个免费的 GUI 客户端,例如 HeidiSQL。 它比 MySQL Workbench 更快地导入 CSV/文本文件。 回答4 我在 MySQL
  • Azure Function 执行速度极慢且不一致(Azure Function execution speed is extremely slow and inconsistent)
    问题 我正在编写一些 Azure Functions 脚本,用于从/向内部数据库读取和写入,并将相关信息显示到网页中。 在加载调用 Azure 函数脚本的网页时,我注意到 Web UI 非常缓慢甚至超时。 经过进一步调查,我意识到以下几点: Azure Function 脚本有时需要 10 秒到 1 分钟以上的时间才能连接到 SQL 数据库。 有时脚本会在几毫秒内运行,有时需要 3 多分钟才能完全运行脚本。 这是我的 Azure 函数脚本: module.exports = function(context, req) { context.log("Function Started: " + new Date()); // Import package const sql = require('mssql'); var _ = require('underscore-node'); var moment = require('moment'); var Promise = require('promise'); // Create a configuration object for our Azure SQL connection parameters var config = { server: "***", // Use your SQL server name
  • JDBC 批处理执行速度极慢(JDBC Batch executing extremely slow)
    问题 谁能告诉我我做错了什么我在一个 mysql 中执行了 350 个插入,它需要 40 秒。 这是代码 long t0 = System.currentTimeMillis(); Connection con = connectionProvider.getConnection(); PreparedStatement s = con.prepareStatement("insert into domkee.friends(idFriends,friend1Id,friend2Id,friend2Name) values(?,?,?,?)"); con.setAutoCommit(false); for (Friend f : friends) { s.setLong(1, 0); s.setLong(2, f.getFriend1Id()); s.setLong(3, f.getFriend2Id()); s.setString(4, f.getFriend2Name()); s.addBatch(); } long t1 = System.currentTimeMillis() - t0; s.executeBatch(); long t2 = System.currentTimeMillis()-t0; con.commit(); long t3 = System
  • Google Maps v2 Projection.toScreenLocation(...) 速度极慢(Google Maps v2 Projection.toScreenLocation(…) extremely slow)
    问题 我已在我的 Android 应用程序中将 Google Maps v1 升级到 v2。 v2 很好,等等 但是一种方法似乎是我生命中最慢的事情。 Projection proj = map.getProjection(); Point point = proj.toScreenLocation(example.m_geopoint); toScreenLocation(...) 太慢了,所以应用程序减慢到无法使用的慢动作。 该方法可能每帧更新 100 次,但在 Google Maps v1 上效果非常好。 当我检查 Android 控制台时,我看到了这个: 10-06 13:53:04.460: D/dalvikvm(4889): GC_EXPLICIT freed 251K, 14% free 14622K/16839K, paused 3ms+5ms 10-06 13:53:05.859: D/dalvikvm(4889): GC_EXPLICIT freed 252K, 14% free 14622K/16839K, paused 2ms+5ms 10-06 13:53:07.222: D/dalvikvm(4889): GC_EXPLICIT freed 251K, 14% free 14622K/16839K, paused 3ms+6ms ... 调用该方法时
  • Automapper 在映射 1400 条记录时运行速度极慢(Automapper running extremely slow on mapping 1400 records)
    问题 我正在使用 AUtomapper,但我对此印象非常深刻,我有一个包含许多嵌套集合的复杂对象。 我正在使用 Telerik OpenAccess,它快速返回 1400 条记录,但是当我将它传递给 Automapper 时,它会减慢到可笑的爬行速度。 这是我的代码供参考: List<DAL.Event> query = httpContext.Events.Where(e => e.Inactive != true && e.Event_Locations != null).ToList(); Mapper.CreateMap<DAL.Event, EventDTO>(); Mapper.CreateMap<DAL.Event_Association, EventAssociationDTO>(); Mapper.CreateMap<DAL.Event_ExecutingUnit, EventExecutingUnitDTO>(); Mapper.CreateMap<DAL.Event_Funding, EventFundingDTO>(); Mapper.CreateMap<DAL.Event_Location, EventLocationDTO>(); Mapper.CreateMap<DAL.Event_Objective, EventObjectiveDTO>()
  • Java 中的 DB2 连接速度极慢(Extremely slow DB2 connectivity in Java)
    问题 我正在尝试从我的 Java 应用程序连接到 Linux 服务器上的 IBM DB2 9 数据库。 我正在使用db2jcc.jar (DB2 通用 JDBC 驱动程序)。 建立连接需要花费大量的时间。 可能有什么问题? 我知道有很多因素可能导致这种情况,但我想深入了解根本原因。 回答1 首先,我会尝试提高驱动程序的日志级别以进行调试甚至跟踪。 这可能会为您提供一种简单的方法来查看它在尝试完成连接时挂在哪里。 你在使用 log4j 吗? 回答2 检查您的 DNS 配置是否 100% 正确。 回答3 在客户端和服务器端建立跟踪。 这应该允许您区分以下可能的问题: 驱动程序执行缓慢(收到答复,但需要很长时间才能答复) 网络很慢(两端的周转速度很快,但中间有很大的中断) 数据库反应缓慢(与第一个相同,但在服务器端) 有很多东西来回走动 一旦你发现了问题,你就必须深入挖掘才能理解为什么会这样。 回答4 发生这种情况是因为驱动程序对 IP 进行反向查找以解析主机名,一个简单的解决方法是将服务器和主机名添加到您的 System32\drivers\etc\hosts(如果您使用的是 Windows)文件,然后使用您刚刚映射的主机名。 例如 %WINDOWS%System32\drivers\etc\hosts 128.0.0.200 数据库服务器 然后在您的应用程序中: jdbc:db2:/
  • Powershell远程执行速度极慢?(Extremely slow Powershell remote execution?)
    问题 有没有办法加快powershell远程处理? 现在,要在我的 VM 上执行“远程”命令,只需使用带凭据的 Invoke-Command 执行一个简单的 hello world 大约需要 30-90 秒。 如果我在初始执行后立即运行命令,则不会有任何延迟。 但是,如果我等待 3-4 分钟,我会再次看到延迟大幅飙升(30-90 秒)。 我也尝试过使用 Enter-PSSession 并且发生了同样的事情(对于初始命令,它很慢,然后很快,直到我在 3-4 分钟内没有发出命令,此时它再次变慢为爬行。) 我试过使用会话(并配置 PsSession-Options http://technet.microsoft.com/en-us/library/hh849703.aspx)但它们似乎也“空闲”,它仍然需要 30-90秒来首先创建一个会话。 我没有运气就禁用了防火墙和 Windows Defender。 关于如何获得更好性能的任何想法? 安装是干净的 Windows,在 VM 上运行 powershell 4.0。 我的主机已加入域,但 VM 未加入。 非常感谢帮助,我对这个问题感到沮丧已经有一段时间了。 示例命令: Invoke-Command { $env:computername; } -Session $session Invoke-Command { $env
  • QT - QFile 复制操作极慢(QT - QFile copy operation extremely slow)
    问题 我正在开发一个需要使用QT (5.6.1)将大量文件从一个文件夹复制到另一个文件夹的应用程序 为此,我一直在使用QFile::copy()方法。 这很好用,除了一件事:它非常慢。 使用 Windows 资源管理器执行相同复制操作所需时间的两倍以上。 想知道为什么会这样,我深入研究了 QT 源代码,并在qfile.cpp找到了这个,看起来很相关: char block[4096]; qint64 totalRead = 0; while(!atEnd()) { qint64 in = read(block, sizeof(block)); if (in <= 0) break; totalRead += in; if(in != out.write(block, in)) { close(); d->setError(QFile::CopyError, tr("Failure to write block")); error = true; break; } } 因此,据我了解,复制操作使用的是 4096 字节的缓冲区。 这对于复制操作来说非常小,很可能是问题的原因。 所以我所做的是将缓冲区的大小更改为: char block[4194304]; // 4MB buffer 然后我重建了整个 QT 库以包含此更改。 但是,所做的所有修改都完全打破了该方法。 现在
  • Android 设备上的 JavaScript/HTML/CSS 应用程序 - 速度极慢(JavaScript/HTML/CSS applications on Android devices - extremely slow)
    问题 我们正在制作一些 JavaScript 游戏。 它们也可以在 iPhone、iPad 和台式机上完美运行。 最大的问题是安卓设备。 我们拥有的所有带有 Honeycomb OS 3.x 的平板电脑(Samsung Tab 10.1、Motorola Xoom、Acer Iconia 等)在执行 JavaScript 和呈现内容时都非常慢。 它在 2.x 手机上更好,但仍远远落后于 Apple 设备…… 我们尝试对div 元素以及HTML5 canvas使用传统方法,但即使是简单的弹跳球示例也非常慢(如果您想测试它,请访问 http://sie.mautilus.com/canvas)。 如果我们在 Android 的调试菜单中禁用启用 OpenGL 渲染,它会稍微好一点,但仍然无法为广大观众使用,不说事实,普通用户不会这样做...... 这使得基于 JavaScript 的用户界面(事件有点复杂)在 Android 上完全无法使用…… 在我的 Intel 386 机器上在 MS-DOS 中运行的简单弹跳球在具有双核 1 GHz Cortex-A9 CPU 的高端平板电脑上无法使用,这是怎么回事? 另见: http://code.google.com/p/android/issues/detail?id=17353 http://groups.google.com/group
  • Java Server,TLSv1.1 快,TLSv1.2 极慢(90MByte/sec vs 4MByte/sec)(Java Server, TLSv1.1 fast, TLSv1.2 extremely slow (90MByte/sec versus 4MByte/sec))
    问题 测试之间的唯一变化是更改 TLS 版本。 Chrome 和 FireFox 之间的行为是相同的。 TLSv1 和 TLSv1.1 都达到 90 兆字节/秒。 他们在 Java 6 (TLSv1) 和 Java 8 (TLSv1/TLSv1.1) 上获得了这种速度。 然而,TLSv1.2 大大降低了速度。 我们得到 4 兆字节/秒。 没有更改密码,没有其他设置等。不仅我们的开发机器,而且客户也报告了同样的事情,Windows 操作系统、Java 8、TLSv1.2。 我们使用的是 OS X、Java 8、TLSv1.2。 所以这似乎是一个普遍的趋势。 测试是在本地主机、至强 6 核处理器、SSD 驱动器上完成的。 如果我们不使用 HTTPS,我们将获得超过 200MB/秒的速度。 所以 4MB/sec 只是对我们可以做的事情的可怕侮辱。 这不是初始连接、缓存或重新协商等。这只是原始传输速度。 我没有发现任何已知的 Java 错误,有没有人有任何猜测? 这是 Chrome 报告的连接和密码: TLSv1.2 您与 127.0.0.1 的连接使用现代加密技术进行加密。 该连接使用 TLS 1.2。 连接使用 AES_128_GCM 进行加密和验证,并使用 ECDHE_RSA 作为密钥交换机制。 TLSv1.1 您与 127.0.0.1 的连接使用过时的加密技术进行加密。 该连接使用
  • 与cat相比,bash同时读取循环极慢,为什么呢?(Bash while read loop extremely slow compared to cat, why?)
    问题 一个简单的测试脚本在这里: while read LINE; do LINECOUNT=$(($LINECOUNT+1)) if [[ $(($LINECOUNT % 1000)) -eq 0 ]]; then echo $LINECOUNT; fi done 当我做cat my450klinefile.txt | myscript cat my450klinefile.txt | myscript CPU锁定为100%,每秒可以处理约1000行。 大约需要5分钟的时间来处理cat my450klinefile.txt >/dev/null执行的操作。 有没有一种更有效的方法来执行此操作。 我只需要从stdin中读取一行,计算字节数,然后将其写到命名管道中即可。 但是,即使这个例子的速度也不可能太慢。 每输入1 Gb输入行,我需要执行一些更复杂的脚本操作(关闭并打开一些将数据馈入的管道)。 回答1 while read速度太慢的原因是需要外壳程序对每个字节进行系统调用。 它不能从管道读取较大的缓冲区,因为外壳程序不得从输入流读取多行内容,因此必须将每个字符与换行符进行比较。 如果在while read循环上运行strace , while read可以看到此行为。 此行为是可取的,因为它可以可靠地执行以下操作: while read size; do dd bs=$size
  • TypeScript 编译速度极慢 > 12s(TypeScript compilation extremely slow > 12s)
    问题 只是把它放在那里看看其他人是否有这个问题...... 我已经使用 webpack 作为我的构建工具构建了一个带有 typescript 的 angular 2 应用程序,它一切正常,但是我注意到 typescript 编译超级慢,我现在 12 秒......,而且很明显都是因为打字稿编译过程.... 我使用了 ts-loader 或 awesome-typescript-loader 并得到了类似的结果,如果我注释掉这个加载器,我的构建时间会下降到 1 秒左右...... 经过一些研究,编译打字稿时出现“慢”时间似乎是“正常的”,但是 12 秒是正常的吗?? 旧帖子暗示可能是由于节点版本冲突,我目前正在运行 v4.4.2 ... 下面是我的 webpack 代码,以防万一有人在那里发现问题...... Uglify 部分中的注释代码是由于 angular 2 侧的一些“错误”...... const path = require('path'); const merge = require('webpack-merge'); const webpack = require('webpack'); const NpmInstallPlugin = require('npm-install-webpack-plugin'); const CopyWebpackPlugin =