簡體   English   中英

使用 HTTPS 的 Perl LWP 內存泄漏

[英]Memory leak with Perl's LWP using HTTPS

我想我在通過 HTTPS 連接時發現了 LWP 的內存泄漏。 使用以下腳本,內存使用量不斷增加:

use LWP::UserAgent;

$ua = LWP::UserAgent->new();
$request = HTTP::Request->new(GET=>'https://www.google.com/');
while (1) {
  $response = $ua->request($request);
  sleep(1);
}

這個其他腳本沒有問題:

use LWP::UserAgent;

$ua = LWP::UserAgent->new();
$request = HTTP::Request->new(GET=>'http://www.google.com/'); # https => http
while (1) {
  $response = $ua->request($request);
  sleep(1);
}

Perl 5.12.3 / LWP 5.837 / Crypt::SSLeay 0.58 / Mac OS X 10.7.4

有誰知道解決這個問題的方法?


更新

Perl 5.12.4 / LWP 6.05 / Crypt::SSLeay 0.64 / Mac OS X 10.8.4

通過HTTPS連接時內存泄漏仍然存在。 要嘗試一下,請在終端上運行示例腳本,並通過活動監視器查看內存的增長和增長。


更新

經過一些測試,我發現,隨着最近我的庫的升級,仍然存在內存泄漏,但只有當您通過 HTTPS調用某些地址時才會發生這種情況 在上面的例子中,我打電話給https://www.google.com ,它恰好是這些地址之一。 例如,這段代碼沒有給我任何內存泄漏:

 use LWP::UserAgent; $ua = LWP::UserAgent->new(); $request = HTTP::Request->new(GET=>'https://twitter.com/'); # www.google.com => twitter.com while (1) { $response = $ua->request($request); sleep(1); }


更新

我報告了這個錯誤,其他一些人也證實了我的發現: https : //rt.cpan.org/Ticket/Display.html?id=88287

在 linux 上,使用 perl 5.10、Crypt 0.58、Lwp 6.02,內存使用量是恆定的。 嘗試將您的 perl 模塊升級到最新版本。

如果問題仍然存在,請為此問題創建 RT 票證,此模塊的維護人員將修復泄漏。

問候,

至少對我而言,您似乎可以通過禁用驗證主機名來解決此問題:

my $ua = LWP::UserAgent->new(ssl_opts => { verify_hostname => 0 });

顯然,如果安全性對您的應用程序很重要,則不建議這樣做!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM