[jcifs] Performance Issue with jcifs and NetApp

André Warnier aw at ice-sa.com
Thu May 30 15:06:01 MDT 2013


Torsten Uhr wrote:
> Hi André,
> 
> here are the results oft he netstat command before, while listing the folder and after that.
> It seems there are no unexpected connections.

A real network trace would be much more informative, but something below "does not smell 
right".
Which systems are respectively 193.30.60.233 and 172.30.40.62 ?
(I assume that the Linux client is 172.30.36.1).
It looks like a connection is attempted by 172.30.36.1 to 193.30.60.233:445, but 
193.30.60.233 never responds. (See http://en.wikipedia.org/wiki/TCP_half-open).
It seems related to your directory listing, since both connections appear only during the 
listing. Maybe that is what slows things down here.

Can you run the same "netstat snapshots" while you are doing the same directory listing 
through the CIFS mountpoint ? (to compare)

Apart from that, we cannot get much further without a real packet trace, using one of the 
programs which Charles mentioned.  You have enough information below to filter the packets 
which you need to capture.

Another way may be to provide a sample of the code which you use to do this directory 
listing.  Maybe some java/cifs specialist here would spot some obvious mistake.
Don't count on it too much though : not many people feel like browsing through someone 
else's code to spot mistakes, and it is quite time-consuming.  Providing a packet trace 
would be much better.



> 
> BEFORE:
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> 
> WHILE:
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57740       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57740       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57740       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57740       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57740       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57740       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57740       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57740       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57740       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57740       193.30.60.233:445       SYN_SENT    27162/java
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57740       193.30.60.233:445       SYN_SENT    27162/java
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> tcp        0      1 172.30.36.1:57742       193.30.60.233:445       SYN_SENT    27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57743       193.30.60.233:445       SYN_SENT    27162/java
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57743       193.30.60.233:445       SYN_SENT    27162/java
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57743       193.30.60.233:445       SYN_SENT    27162/java
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57743       193.30.60.233:445       SYN_SENT    27162/java
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57743       193.30.60.233:445       SYN_SENT    27162/java
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57743       193.30.60.233:445       SYN_SENT    27162/java
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57743       193.30.60.233:445       SYN_SENT    27162/java
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57743       193.30.60.233:445       SYN_SENT    27162/java
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57743       193.30.60.233:445       SYN_SENT    27162/java
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57743       193.30.60.233:445       SYN_SENT    27162/java
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57743       193.30.60.233:445       SYN_SENT    27162/java
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57743       193.30.60.233:445       SYN_SENT    27162/java
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57743       193.30.60.233:445       SYN_SENT    27162/java
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57743       193.30.60.233:445       SYN_SENT    27162/java
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> tcp        0      1 172.30.36.1:57743       193.30.60.233:445       SYN_SENT    27162/java
> tcp        0      0 172.30.36.1:57756       172.30.40.62:445        VERBUNDEN   27162/java
> 
> AFTER:
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s"
> grztc001:/TransConnect # netstat -pn | grep -P ":(445|137|138|139)\s" 
> 
> With best regards
> 
> Torsten Uhr
> Leiter Entwicklung TransConnect®
> 
> Email: torsten.uhr at sql-ag.de
> Web  : www.transconnect-online.de
> ·······················································
> SQL Projekt AG
> Franklinstr. 25 a
> 01069 Dresden
> 
> Aufsichtsratsvorsitzender: Franz-Josef Günther
> Vorstand: Jürgen Bittner (Vorsitzender), André Engelhorn, Jens Gärtner
> Handelsregister: HRB 28128 Amtsgericht Dresden
> 
> Telefon: (0351) 87619-0
> Telefax: (0351) 87619-99
> http://www.sql-ag.de
> ······················································· 
> 
> Diese E-Mail enthält vertrauliche und/oder rechtlich geschützte Informationen. 
> Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und vernichten Sie diese Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail oder Inhalte ist nicht gestattet. 
> 
> This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. 
> Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
> 
>  SAVE PAPER - THINK BEFORE YOU PRINT
> 
> 
> -----Ursprüngliche Nachricht-----
> Von: jcifs-bounces at lists.samba.org [mailto:jcifs-bounces at lists.samba.org] Im Auftrag von André Warnier
> Gesendet: Mittwoch, 29. Mai 2013 17:00
> An: JCIFS Samba list
> Betreff: Re: [jcifs] Performance Issue with jcifs and NetApp
> 
> Torsten Uhr wrote:
>> Hi André,
>>
>> thanks for Your quick reply.
>>
>>> Is that what happens ?
>> Exactly.
>>
>>> "NetApp fileserver" (whatever that is),
>> see: http://www.netapp.com/de/products/protocols/nas/cifs.aspx
>>
>>> do you have any way, on the NetApp server, to trace what is going on and see what the difference is when accessing these files from the one or the other type of client ?
>> I have pleased our customer to contact their operations to check out for any logs. At the moment their are only connection information but no logs.
>>
>>> Or alternatively, on the client system, to trace what is going on between that client and that NetApp server ?
>> I have told our customer to set the property 'jcifs.util.loglevel=10'. Are there any other tasks to enable logging in jcifs?
>> If i receive any further information, I will send it to You.
> 
> Send it to the list, like before.  I am not really an expert here, I was just trying to define the issue clearly.
> 
> If the mounting of the CIFS filesystem works, and the access through that mountpoint is fast, that seems to eliminate any fundamental issue like network problems, or DNS problems, or authentication problems.
> 
> So there must be something quite specific that slows down things when you access the files through the jcifs library.  Which on the face of it looks a bit strange, because as far as I know the CIFS filesystem implementation under Linux is using much of the same codebase from samba.org.
> In that area, I am a bit over my head unfortunately.
> 
> I would float a suspicion, but do not by any means consider this as a well-informed comment : maybe the way in which you are doing the access through the jcifs library is forcing it to create new connections all the time, resulting in a new authentication at each access ?  That would probably slow down things quite a bit.
> 
> The right tool to find out would be something like Wireshark, and get a network trace while you are reading a file (slowly) through the jcifs library.
> But you could just start such a (long) transfer, and then do a "netstat" on your Linux client.  That should show at least the socket connections in use for that transfer.
> You are looking for port numbers :137, :138, :139 and :445.
> For example :
> netstat -pn | grep -P ":(445|137|138|139)\s"
> 
> 
> 



More information about the jCIFS mailing list