跳到主要內容

發表文章

目前顯示的是有「Jetty」標籤的文章

Jetty can't start of pure IPv6 env on windows

 Problem 在同事Charlie熱心的測試下,他發現windows上可以使用以下指令,完整移除IPv4: netsh interface ipv4 uninstall 在移除IPv4後,Jetty就無法啟動了: 我們使用的Java版本是1.8.0_201,Jetty是9.4.21。 How to resolve? 經過爬文,發現這是JDK8、9的Bug。於是我使用以下測試程式分別使用JDK8與JDK13去確認結果: import java.net.NetworkInterface ; import java.net.SocketException ;   public class Tester {   public static void main ( String [ ] args ) { try { NetworkInterface. getNetworkInterfaces ( ) ; } catch ( SocketException e ) { // TODO Auto-generated catch block e. printStackTrace ( ) ; } }   } 經過實驗,的確在JDK8上有問題,而JDK13已經解決這個問題了: 更新JDK對我們來說是不小的工程,但目前應該沒其它解決方式了。 Reference JDK-8046500 : GetIpAddrTable function failed on Pure Ipv6 environment

Jetty - Too Many Open Files Issue on Linux (Jetty 9.0.7)

最近開始使用security audit tool測試我們軟體(搭Jetty9.0.7): nikto -h 192.168.0.1 -port 80 -root / MyApp -mutate 1 大漏洞沒發現,卻發現在Linux上會經不起大量請求而產生Too many open files Exception: java.io.IOException: Too many open files at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method) at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:422) at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:250) at org.eclipse.jetty.server.ServerConnector.accept(ServerConnector.java:321) at org.eclipse.jetty.server.AbstractConnector$Acceptor.run(AbstractConnector.java:460) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:601) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:532) at java.lang.Thread.run(Thread.java:745) 使用lsof -p $pid會發現很可能是socket沒關閉造成的問題: java 9403 root 250u unix 0xffff8802653b1180 0t0 30861424 socket java 9403 root 251u ...