Доброго времени суток!
PhantomJSDriver почему-то не закрывает сокет. После вызова close() и quit() сокет подвисает в состоянии CLOSE_WAIT:
# netstat -alptun
...
tcp 1 0 127.0.0.1:56092 127.0.0.1:2402 CLOSE_WAIT 18946/java
tcp 1 0 127.0.0.1:36449 127.0.0.1:5734 CLOSE_WAIT 18946/java
...
Вот кусок кода с закрытием:
try
{
final URL url = getCrawlerUrl(httpRequest);
if (useSnapshot)
{
html = readSnapshot(url);
}
if (html == null)
{
driver = new PhantomJSDriver(caps);
driver.get(url.toString());
Thread.sleep(500);
WebDriverWait wait = new WebDriverWait(driver, 2);
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.cssSelector("div[global-spinner]")));
html = driver.getPageSource();
if (useSnapshot)
{
writeSnapshot(url, html);
}
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
finally
{
if (driver != null)
{
driver.close();
driver.quit();
}
}
Подскажите, что мы делаем не правильно? Или это прблема самого фантома?
Версия phantomjs:
$ phantomjs -v
1.9.8
$ java -version
java version "1.7.0_79"
OpenJDK Runtime Environment (IcedTea 2.5.6) (7u79-2.5.6-1~deb8u1)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)
ps: Тема началась тут: CLOSE_WAIT сокеты
Вот еще по теме: https://github.com/SeleniumHQ/selenium/issues/1080