简体   繁体   中英

Problems with Too many connections

I am using GM_xmlhttpRequest (greasemonkey xmlhttpRequest) to communicate with my app. Every half second it sends some json to update the status of a page. I am running 3 pages in FireFox. Using netstat -a i got these results.

This is over 200 lines. Why am i using so many ports!?! How can i... not do this? and still communicate with my application.

NOTE: The 3 pages i am on (example google.com) does not match my domain (localhost) so i am pretty sure a normal xmlhttpRequest will not work (i havent tried. i use jquery as a wrapper)

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    0.0.0.0:1234           My-PC:0             LISTENING
  TCP    127.0.0.1:1234         My-PC:19204         TIME_WAIT
  TCP    127.0.0.1:1234         My-PC:19205         TIME_WAIT
  [line 8...]
  [line 221...]
  TCP    127.0.0.1:1234         My-PC:19420         TIME_WAIT
  TCP    127.0.0.1:1234         My-PC:19421         TIME_WAIT
  TCP    127.0.0.1:1234         My-PC:19422         TIME_WAIT
  TCP    127.0.0.1:1234         My-PC:19423         TIME_WAIT

TIME_WAIT means that the connection has closed but in case some packets are still floating around the resources are kept for a while. This is necessary because of the jitter of the latency between the two computers communicating. Jitter means that the time it takes to get from one computer to the other is not constant. As such, you might get a close packet, and then some other packets. If the operating system immediately reused the src IP, src port, dst IP, dst port combination these other packets could prove confusing (look like corruption of the packets/a spoofing attack). Therefore the operating system sits on the resources for a while.

I'm not sure how, but I understand the value of how long the operating system will sit in TIME_WAIT can be tuned. As to what appears to be your overarching question, yes this can be a problem if your site is high volume because it eats up resources. Also, when you're saying you're "using so many ports", you're only using a bunch of ports on the client. Each time you make a new connection your client uses a new port for the client side port number, eventually if you make enough connections it will reuse previously used port numbers. This is not really a problem on the client side, it's the server that will have the problem. Just to be clear, it's not a matter of "how many ports", it's a matter of how many connections (ie number of lines where the local address corresponds to your server application).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM