<font size=2 face="sans-serif">Andy,</font>
<br>
<br><font size=2 face="sans-serif">I'm using Solaris 10.5 in a cluster
zone configuration. Both the main and the proxy server. I have also a little
proxy under Linux Ubuntu. </font>
<br><font size=2 face="sans-serif">XYMON version 4.3.12</font>
<br>
<br><font size=2 face="sans-serif">Now, my proxy under Solaris is working
fine with ~900 targets. Here are the different stepsI have done:</font>
<br>
<br><font size=2 face="sans-serif"><b>0- Use a tool to observe the behaviour
of the network</b> on the system. I used netstat on the zone and lsof -i
:1984 on the global zone (physical node of the cluster)</font>
<br>
<br><font size=2 face="sans-serif"> Here my perl script to be run
on the zone (netstat):</font>
<br>
<br><font size=2 face="sans-serif"><i>$total = 0 ;</i></font>
<br><font size=2 face="sans-serif"><i>$big_total = 0 ;</i></font>
<br><font size=2 face="sans-serif"><i>@netstat = ` netstat -naP tcp ` ;</i></font>
<br><font size=2 face="sans-serif"><i>my %Con_Status ;</i></font>
<br><font size=2 face="sans-serif"><i>my %Con_Status_Total ;</i></font>
<br><font size=2 face="sans-serif"><i>foreach $ln (@netstat)</i></font>
<br><font size=2 face="sans-serif"><i>{</i></font>
<br><font size=2 face="sans-serif"><i>        chomp($ln)
;</i></font>
<br><font size=2 face="sans-serif"><i>        @elts
= split(/ +/,$ln) ;</i></font>
<br><font size=2 face="sans-serif"><i>        if ((
$#elts > 5 ) && ( $ln =~ /[0-9]+.*[A-Z]+/))</i></font>
<br><font size=2 face="sans-serif"><i>        {</i></font>
<br><font size=2 face="sans-serif"><i>         
       $big_total++ ;</i></font>
<br><font size=2 face="sans-serif"><i>         
       unless ( exists($Con_Status_Total{$elts[$#elts]})
)</i></font>
<br><font size=2 face="sans-serif"><i>         
      {</i></font>
<br><font size=2 face="sans-serif"><i>         
              $Con_Status_Total{$elts[$#elts]}
= 1 ;</i></font>
<br><font size=2 face="sans-serif"><i>         
      } else {</i></font>
<br><font size=2 face="sans-serif"><i>         
              $Con_Status_Total{$elts[$#elts]}
= $Con_Status_Total{$elts[$#elts]} + 1 ;</i></font>
<br><font size=2 face="sans-serif"><i>         
      }</i></font>
<br>
<br><font size=2 face="sans-serif"><i>        }</i></font>
<br>
<br><font size=2 face="sans-serif"><i>        if (
$ln =~ /\.1984 +/ )</i></font>
<br><font size=2 face="sans-serif"><i>        {</i></font>
<br>
<br><font size=2 face="sans-serif"><i>         
      unless ( exists($Con_Status{$elts[$#elts]}) )</i></font>
<br><font size=2 face="sans-serif"><i>         
      {</i></font>
<br><font size=2 face="sans-serif"><i>         
              $Con_Status{$elts[$#elts]}
= 1 ;</i></font>
<br><font size=2 face="sans-serif"><i>         
      } else {</i></font>
<br><font size=2 face="sans-serif"><i>         
              $Con_Status{$elts[$#elts]}
= $Con_Status{$elts[$#elts]} + 1 ;</i></font>
<br><font size=2 face="sans-serif"><i>         
      }</i></font>
<br>
<br><font size=2 face="sans-serif"><i>        }</i></font>
<br>
<br>
<br><font size=2 face="sans-serif"><i>}</i></font>
<br>
<br>
<br><font size=2 face="sans-serif"><i>print " State\t\tPort 1984\tTotal\n=======================================\n"
;</i></font>
<br><font size=2 face="sans-serif"><i>foreach $Conn_State (sort keys %Con_Status_Total
)</i></font>
<br><font size=2 face="sans-serif"><i>{</i></font>
<br><font size=2 face="sans-serif"><i>         unless
( exists($Con_Status{$Conn_State}) ) { $Con_Status{$Conn_State} = 0 ; }</i></font>
<br><font size=2 face="sans-serif"><i>        if (
length($Conn_State) < 7 ) { $col = "\t\t" ; } else { $col
= "\t"  ; }</i></font>
<br><font size=2 face="sans-serif"><i>        print
" $Conn_State$col$Con_Status{$Conn_State}\t\t$Con_Status_Total{$Conn_State}\n"
;</i></font>
<br><font size=2 face="sans-serif"><i>        $total
= $total + $Con_Status{$Conn_State} ;</i></font>
<br><font size=2 face="sans-serif"><i>}</i></font>
<br><font size=2 face="sans-serif"><i>print "=======================================\n
TOTAL\t\t$total\t\t$big_total\n" ;</i></font>
<br>
<br>
<br>
<br><font size=2 face="sans-serif"><b>1- Tune and configure how Solaris
manages the network </b>using the ndd command:</font>
<br>
<br><font size=2 face="sans-serif"><i>ndd -set /dev/tcp tcp_time_wait_interval
       2000</i></font>
<br><font size=2 face="sans-serif"><i>ndd -set /dev/tcp tcp_fin_wait_2_flush_interval
67500</i></font>
<br><font size=2 face="sans-serif"><i>ndd -set /dev/tcp tcp_ip_abort_interval
        300000</i></font>
<br><font size=2 face="sans-serif"><i>ndd -set /dev/tcp tcp_keepalive_interval
       7200000</i></font>
<br><font size=2 face="sans-serif"><i>ndd -set /dev/tcp tcp_rexmit_interval_max
      4000</i></font>
<br><font size=2 face="sans-serif"><i>ndd -set /dev/tcp tcp_rexmit_interval_min
      3000</i></font>
<br><font size=2 face="sans-serif"><i>ndd -set /dev/tcp tcp_rexmit_interval_initial
  3000</i></font>
<br><font size=2 face="sans-serif"><i>ndd -set /dev/tcp tcp_smallest_anon_port
       1024</i></font>
<br>
<br><font size=2 face="sans-serif"><i>ndd -set /dev/tcp tcp_conn_req_max_q
   2048</i></font>
<br><font size=2 face="sans-serif"><i>ndd -set /dev/tcp tcp_conn_req_max_q0
  4096</i></font>
<br><font size=2 face="sans-serif"><i>ndd -set /dev/tcp tcp_slow_start_initial
       4</i></font>
<br>
<br><font size=2 face="sans-serif"><i>ndd -set /dev/tcp tcp_xmit_hiwat
       262144</i></font>
<br><font size=2 face="sans-serif"><i>ndd -set /dev/tcp tcp_recv_hiwat
       262144</i></font>
<br><font size=2 face="sans-serif"><i>ndd -set /dev/tcp tcp_max_buf  
1048576</i></font>
<br>
<br>
<br>
<br><font size=2 face="sans-serif"><b>2- Modify the program xymonproxy.c</b></font>
<br>
<br><font size=2 face="sans-serif">As I previously said, sockets are not
well handled in this program (closure not managed). Because I know very
few about C programming, I just "arranged" the program, but it's
remain a dirty solution.</font>
<br><font size=2 face="sans-serif">=> so_linger, setsockopt part</font>
<br>
<br><font size=2 face="sans-serif">I modified also line 973 and following
because of verbose logging slowing done the proxy (select failed message).
The best should be to solve to issue but I didn't.</font>
<br>
<br><font size=2 face="sans-serif"><i># diff xymonproxy.c xymonproxy.c.ORIG</i></font>
<br><font size=2 face="sans-serif"><i>230d229</i></font>
<br><font size=2 face="sans-serif"><i><        
struct linger so_linger;</i></font>
<br><font size=2 face="sans-serif"><i>715,717d713</i></font>
<br><font size=2 face="sans-serif"><i><        
                     
        so_linger.l_onoff = 0;</i></font>
<br><font size=2 face="sans-serif"><i><        
                     
so_linger.l_linger = 10;</i></font>
<br><font size=2 face="sans-serif"><i><        
                     
setsockopt(cwalk->ssocket, SOL_SOCKET, SO_LINGER, &so_linger, sizeof(so_linger));</i></font>
<br>
<br><font size=2 face="sans-serif"><i>977,981c973,976</i></font>
<br><font size=2 face="sans-serif"><i>< /*        
   if (n < 0) {            
                     
                     
           */</i></font>
<br><font size=2 face="sans-serif"><i>< /*        
           errprintf("select() %d/%d
failed: %s\n", n, maxfd, strerror(errno));    */</i></font>
<br><font size=2 face="sans-serif"><i>< /*        
   }                
                     
                     
                  */</i></font>
<br><font size=2 face="sans-serif"><i>< /*        
   else if (n == 0) {            
                     
                     
     */</i></font>
<br><font size=2 face="sans-serif"><i><        
      if (n == 0) {</i></font>
<br><font size=2 face="sans-serif"><i>---</i></font>
<br><font size=2 face="sans-serif"><i>>        
      if (n < 0) {</i></font>
<br><font size=2 face="sans-serif"><i>>        
              errprintf("select()
failed: %s\n", strerror(errno));</i></font>
<br><font size=2 face="sans-serif"><i>>        
      }</i></font>
<br><font size=2 face="sans-serif"><i>>        
      else if (n == 0) {</i></font>
<br><font size=2 face="sans-serif"><i>1001c996</i></font>
<br><font size=2 face="sans-serif"><i><        
      else if ( n > 0 ) {</i></font>
<br><font size=2 face="sans-serif"><i>---</i></font>
<br><font size=2 face="sans-serif"><i>>        
      else {</i></font>
<br>
<br>
<br>
<br><font size=2 face="sans-serif"><b>3- XYMON proxy conf</b></font>
<br>
<br><font size=2 face="sans-serif">Because of the large amount of targets:</font>
<br>
<br><font size=2 face="sans-serif">In xymonserver.cfg, of the proxy, I
put MAXMSGSPERCOMBO="500" .</font>
<br>
<br><font size=2 face="sans-serif">In the xymonserver.cfg, of the main
server, I put</font>
<br>
<br><font size=2 face="sans-serif">MAXMSGSPERCOMBO="500"</font>
<br>
<br><font size=2 face="sans-serif">MAXLINE="5242880"</font>
<br><font size=2 face="sans-serif">MAXMSG_CLIENT="5242880"</font>
<br><font size=2 face="sans-serif">MAXMSG_DATA="5242880"</font>
<br><font size=2 face="sans-serif">MAXMSG_STACHG="5242880"</font>
<br><font size=2 face="sans-serif">MAXMSG_STATUS="5242880"</font>
<br><font size=2 face="sans-serif">MAXMSG_NOTES="5242880"</font>
<br><font size=2 face="sans-serif">MAXMSG_PAGE="5242880"</font>
<br><font size=2 face="sans-serif">MAXMSG_ENADIS="5242880"</font>
<br><font size=2 face="sans-serif">MAXMSG_CLICHG="5242880"</font>
<br>
<br>
<br><font size=2 face="sans-serif">This part is not realy tunned (figures
should be too large) but it's working.</font>
<br>
<br>
<br><font size=2 face="sans-serif">Cordialement, Regards,Mit freundlichen
Grüßen,<br>
<br>
Gautier BEGIN<br>
<br>
System Tools Team Lead<br>
CACEIS and APERAM accounts<br>
CSC Computer Sciences Luxembourg S.A.<br>
12D Impasse Drosbach<br>
L-1882 Luxembourg<br>
<br>
Global Outsourcing Service | p:+352 24 834 276 | m:+352 621 229 172 | gbegin@csc.com
| </font><a href=www.csc.com><font size=2 face="sans-serif">www.csc.com</font></a><font size=2 face="sans-serif"><br>
<br>
<br>
CSC • This is a PRIVATE message. If you are not the intended recipient,
please delete without copying and kindly advise us by e-mail of the mistake
in delivery.  NOTE: Regardless of content, this e-mail shall not operate
to bind CSC to any order or other contract unless pursuant to explicit
written agreement or government initiative expressly permitting the use
of e-mail for such purpose<br>
 • <br>
CSC Computer Sciences SAS • Registered Office: Immeuble Le Balzac, 10
Place des Vosges, 92072 Paris La Défense Cedex, France • Registered in
France: RCS Nanterre B 315 268 664</font>
<br>
<br>
<br>
<br><font size=1 color=#5f5f5f face="sans-serif">From:      
 </font><font size=1 face="sans-serif">Andy Smith <abs@shadymint.com></font>
<br><font size=1 color=#5f5f5f face="sans-serif">To:      
 </font><font size=1 face="sans-serif">xymon@xymon.com</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Date:      
 </font><font size=1 face="sans-serif">05/04/2014 02:50 PM</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Subject:    
   </font><font size=1 face="sans-serif">Re: [Xymon]
XYMON Proxy Issue</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Sent by:    
   </font><font size=1 face="sans-serif">"Xymon"
<xymon-bounces@xymon.com></font>
<br>
<hr noshade>
<br>
<br>
<br><font size=3>Hi,<br>
</font>
<br><font size=3>In February, Gautier reported this issue with xymonproxy
on Solaris :-<br>
</font><font size=3 color=blue><u><br>
</u></font><a href="http://lists.xymon.com/pipermail/xymon/2014-February/039160.html"><font size=3 color=blue><u>http://lists.xymon.com/pipermail/xymon/2014-February/039160.html</u></font></a><font size=3><br>
</font>
<br><font size=3>I have come this week to update an installation of 4.2.3
on Solaris 9 and have encountered the exact same issue as Gautier, but
this time on the latest 4.3.17 code :-<br>
<br>
2014-05-04 13:05:36 xymonproxy version 4.3.17 starting<br>
2014-05-04 13:20:41 Listening on </font><a href=http://0.0.0.0:1984/><font size=3 color=blue><u>0.0.0.0:1984</u></font></a><font size=3><br>
2014-05-04 13:20:41 Sending to Xymon server(s) xx.xx.xx.xx:1984<br>
2014-05-04 13:20:41 select() failed: Invalid argument<br>
2014-05-04 13:20:41 select() failed: Invalid argument<br>
2014-05-04 13:20:41 select() failed: Invalid argument<br>
2014-05-04 13:20:41 select() failed: Invalid argument<br>
2014-05-04 13:20:41 select() failed: Invalid argument<br>
2014-05-04 13:20:41 select() failed: Invalid argument<br>
2014-05-04 13:20:41 Too many select failures, aborting<br>
2014-05-04 13:20:46 xymonproxy version 4.3.17 starting<br>
</font>
<br><font size=3>I do not suffer the connections in TIME_WAIT, just the
constant restarting of the proxy every 15 minutes.  Here is the truss
as it gasps when falling over :-<br>
<br>
poll(0xFFBFF208, 1, 1000)                      
= 0<br>
time()                                         
= 1399206937<br>
poll(0xFFBFF208, 1, 1000)                      
= 0<br>
time()                                         
= 1399206938<br>
poll(0xFFBFF208, 1, 1000)                      
= 0<br>
time()                                         
= 1399206939<br>
poll(0xFFBFF208, 1, 1000)                      
= 0<br>
time()                                         
= 1399206940<br>
poll(0xFFBFF208, 1, 1000)                      
= 0<br>
time()                                         
= 1399206941<br>
poll(0xFFBFF208, 1, 1000)                      
= 0<br>
time()                                         
= 1399206942<br>
poll(0xFFBFF208, 1, 1000)                      
= 1<br>
accept(3, 0x0003AC60, 0xFFBFF310, 1)           
= 4<br>
fcntl(4, F_SETFL, 0x00000080)                  
= 0<br>
time()                                         
= 1399206942<br>
poll(0xFFBFF200, 2, 1000)                      
= 1<br>
read(4, " s t a t u s + 4 5   c s".., 8185)    
= 140<br>
time()                                         
= 1399206942<br>
poll(0xFFBFF200, 2, 1000)                      
= 1<br>
read(4, 0x00038CE2, 8045)                      
= 0<br>
time()                                         
= 1399206942<br>
shutdown(4, 2, 1)                              
= 0<br>
close(4)                                       
= 0<br>
poll(0xFFBFF208, 1, 1000)                      
= 1<br>
accept(3, 0x0003ACD0, 0xFFBFF310, 1)           
= 4<br>
fcntl(4, F_SETFL, 0x00000080)                  
= 0<br>
time()                                         
= 1399206942<br>
time()                                         
= 1399206942<br>
write(2, " 2 0 1 4 - 0 5 - 0 4   1".., 19)     
= 19<br>
write(2, "  ", 1)                              
= 1<br>
write(2, " s e l e c t ( )   f a i".., 34)     
= 34<br>
time()                                         
= 1399206942<br>
time()                                         
= 1399206942<br>
write(2, " 2 0 1 4 - 0 5 - 0 4   1".., 19)     
= 19<br>
write(2, "  ", 1)                              
= 1<br>
write(2, " s e l e c t ( )   f a i".., 34)     
= 34<br>
time()                                         
= 1399206942<br>
time()                                         
= 1399206942<br>
write(2, " 2 0 1 4 - 0 5 - 0 4   1".., 19)     
= 19<br>
write(2, "  ", 1)                              
= 1<br>
write(2, " s e l e c t ( )   f a i".., 34)     
= 34<br>
time()                                         
= 1399206942<br>
time()                                         
= 1399206942<br>
write(2, " 2 0 1 4 - 0 5 - 0 4   1".., 19)     
= 19<br>
write(2, "  ", 1)                              
= 1<br>
write(2, " s e l e c t ( )   f a i".., 34)     
= 34<br>
time()                                         
= 1399206942<br>
time()                                         
= 1399206942<br>
write(2, " 2 0 1 4 - 0 5 - 0 4   1".., 19)     
= 19<br>
write(2, "  ", 1)                              
= 1<br>
write(2, " s e l e c t ( )   f a i".., 34)     
= 34<br>
time()                                         
= 1399206942<br>
time()                                         
= 1399206942<br>
write(2, " 2 0 1 4 - 0 5 - 0 4   1".., 19)     
= 19<br>
write(2, "  ", 1)                              
= 1<br>
write(2, " s e l e c t ( )   f a i".., 34)     
= 34<br>
time()                                         
= 1399206942<br>
write(2, " 2 0 1 4 - 0 5 - 0 4   1".., 19)     
= 19<br>
write(2, "  ", 1)                              
= 1<br>
write(2, " T o o   m a n y   s e l".., 35)     
= 35<br>
_exit(1)<br>
</font>
<br><font size=3>So, question to Gautier, are you using Solaris 9 and have
you managed to resolve this?<br>
</font>
<br><font size=3>Another question to the rest of the list, this is actually
the only proxy I have on Solaris, all the otehrs are on Redhat, is anyone
else using xymonproxy on Solaris and if so, what version?  For the
time being, I am running the old bbproxy until I get this fixed, the rest
of 4.3.17 seems to be working OK.<br>
</font>
<br><font size=3>Thanks for any feedback.</font>
<br><font size=3>-- </font>
<br><font size=3>Andy</font>
<br>
<br><tt><font size=2>_______________________________________________<br>
Xymon mailing list<br>
Xymon@xymon.com<br>
</font></tt><a href=http://lists.xymon.com/mailman/listinfo/xymon><tt><font size=2>http://lists.xymon.com/mailman/listinfo/xymon</font></tt></a><tt><font size=2><br>
</font></tt>
<br>