Thanks Sebb. I'll put in a enhancement request. Regarding this:
> > A probable precedent for this (I think) is that JMeter overrides this > > property too: > > ---------------------- > > http.maxConnections (default: 5) > > If HTTP keep-alive is enabled, this value is the number of idle > > connections that will be simultaneously kept alive, per-destination. > > I could not find where this is overridden in JMeter. I was speculating and just assumed it was overridden. I may have misunderstood the meaning of this setting, but is this the total number of HTTP connections between JMeter and a server (when HTTP Keep-Alive is enabled as in HTTP 1.1)? Since JMeter is emulating many clients, shouldn't this setting be disobeyed? For instance, suppose JMeter emulates 10 concurrent clients (10 threads) simultaneously executing a slow webservice - would 5 connections be made first, and the latter connections be made as the first batch finishes? Kind regards, Sonam Chauhan -- Corporate Express Australia Ltd. Phone: +61-2-93350725, Email: [EMAIL PROTECTED] -----Original Message----- From: sebb [mailto:[EMAIL PROTECTED] Sent: Friday, 26 October 2007 10:00 PM To: JMeter Users List Subject: Re: DNS round robin and JVM DNS lookup caching On 26/10/2007, Sonam Chauhan <[EMAIL PROTECTED]> wrote: > Thanks for the comprehensive response (as always) Sebb. > > > The default TTL is -1, for the reasons stated in the bug report. > > This means the cached value will be kept for the life of the JVM. > > Sun is wrong in their reasoning here (and frustratingly so) - if they > wanted to cache DNS properly, they should have cached entries only for > their TTL duration. Even browsers don't cache forever by default! There is no reasoning stated in the java.properties file - they just assert that it is necessary to permanently cache any DNS results when there is a security manager. They are deliberately overriding the TTL. It's not clear why this protects against DNS spoofing - the first DNS result may be spoofed - but it does mean that the IP address cannot change once obtained, which may be important for some unstated reasons. > --------------------- > From http://en.wikipedia.org/wiki/Domain_name_system#Broken_resolvers > > As a final level of complexity, some applications (such as web-browsers) > also have their own DNS cache, in order to reduce the use of the DNS > resolver library itself. This practice can add extra difficulty when > debugging DNS issues, as it obscures the freshness of data, and/or what > data comes from which cache. These caches typically use very short > caching times - of the order of one minute. Internet Explorer offers a > notable exception: recent versions cache DNS records for half an > hour.[1] > --------------------- > > Do you think it's worth a Bugzilla feature request for JMeter allow the > user to override Java's default DNS-caching behaviour in a user-setting > at the beginning of the test? This will enable it to work properly (as a > browser would) in DNS round-robin load balancing scenario. You can already do this for Sun JVMs - just define sun.net.inetaddr.ttl on the command-line or in system.properties. But I suppose it would be possible for JMeter to treat the property networkaddress.cache.ttl specially, and set it as per the bug description. BTW, the file java.security seems to have the default as: security.overridePropertiesFile=true which means that the property java.security.properties can be used to append to/override the java.security file; this might make it unnecessary to special-case the TTL property. But it would be simpler for the user if it could be defined in the JMeter system.properties file, so feel free to create an enhancement request. > A probable precedent for this (I think) is that JMeter overrides this > property too: > ---------------------- > http.maxConnections (default: 5) > If HTTP keep-alive is enabled, this value is the number of idle > connections that will be simultaneously kept alive, per-destination. I could not find where this is overridden in JMeter. > ---------------------- > > Kind regards, > Sonam Chauhan > -- > Corporate Express Australia Ltd. > Phone: +61-2-93350725, Email: [EMAIL PROTECTED] > > > > -----Original Message----- > From: sebb [mailto:[EMAIL PROTECTED] > Sent: Thursday, 25 October 2007 10:07 PM > To: JMeter Users List > Subject: Re: DNS round robin and JVM DNS lookup caching > > The Sun Java document is at: > > http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html > > which says you can change networkaddress.cache.ttl in java.security or > sun.net.inetaddr.ttl on the command-line. > > These need to be defined at startup - or at least before DNS is first > used. > > So you cannot change the TTL without restarting, but you can set it to > a low enough value (try 0) such that DNS queries are not cached for > too long. > > The default TTL is -1, for the reasons stated in the bug report. > This means the cached value will be kept for the life of the JVM. > > I think non-Java applications also cache DNS results; I'm not sure if > this is done in the language library or the OS itself. > > Nor do I know if Java is subject to caching of DNS entries by the OS. > > If you want to sure of using the correct DNS entries, you could > perhaps try using CSV Dataset with a file of IP addresses. However > this probably won't work for virtual hosts, as they normally require > the host name (and I'm not sure you can override this via the header > manager). > > On 25/10/2007, Sonam Chauhan <[EMAIL PROTECTED]> wrote: > > Hi - > > > > > > > > I've got to load test a clustered application server. > > > > > > > > External users of the application (whom JMeter must simulate) access > it > > through a hardware load balancer. > > > > > > > > However, internal access goes through DNS Round Robin load balancing > > (implemented in Active Directory). This means that each DNS request to > > resolve a hostname will resolve to a different primary IP address. > > > > > > > > I understand that the JVM caches DNS lookups forever by default. This > > article implies that a JMeter load test accessing a cluster through > the > > DNS Round Robin above, will only load test 1 node in the cluster as it > > caches the first name resolution it does: > > > > http://www.rgagnon.com/javadetails/java-0445.html > > > > Once an application has performed network access (i.e. urlconnection, > > parsing of xml document with external references, etc), the DNS > settings > > get cached so any subsequent operation will use the old settings even > if > > the real settings have changed. To reset everything, you have to > restart > > the server since the default setting JVM setting is to cache forever. > > > > > > Is this true? How does this impact JMeter testing? I found this > related > > bug on the Sun website. > > > > > > > > http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6376406 > > > > > > > > > > > > Kind regards, > > > > Sonam Chauhan > > > > -- > > > > Corporate Express Australia Ltd. > > > > Phone: +61-2-93350725, Email: [EMAIL PROTECTED] > > > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]

