Hi Florian,

Here is the debug trace, it looks like the slowness occurs before "Initializing 
AtomPub SPI", could that be SSL shake or something else?

CMIS bridge server access log,  9:19:35 - 9:19:47 (12.609 seconds),
2016-12-23      09:19:47        12.609  GET     
/cmisbridge/atom/myrepository/content/?ID=idd_6ADB4E75-9FBB-4802-9A18-A7D80220D8B5
    200

Debug log
//no debug logs before this initializing atompub spi
2016-12-23 09:19:45,413 DEBUG [[ACTIVE] ExecuteThread: '19' for queue: 
'weblogic.kernel.Default (self-tuning)'] 
[oD4sshOkz84__MiAx3i8UXjkp9Gh72i54art8gJeRVy9dENHqP5r!1954451694!1482513585060] 
org.apache.chemistry.opencmis.client.bindings.spi.atompub.CmisAtomPubSpi
: Initializing AtomPub SPI...
.....................................................
2016-12-23 09:19:47,034 INFO  [[ACTIVE] ExecuteThread: '19' for queue: 
'weblogic.kernel.Default (self-tuning)'] 
[oD4sshOkz84__MiAx3i8UXjkp9Gh72i54art8gJeRVy9dENHqP5r!1954451694!1482513585060] 
com.bch.filenet.cmis.bridge.MyCmisService: getContentStream ends.


Thanks
Wentao

-----Original Message-----
From: Florian Müller [mailto:[email protected]] 
Sent: 2016, December 22 1:10 PM
To: Lu, Wentao
Cc: [email protected]
Subject: Re: Slow when call cmis bridge using pure http call after a few days

Hi Wentao,

we are running a bridge based product for several years now and have not seen 
anything like this.
I'll add more logging and debug code to the bridge. That should give us a 
better insight.


- Florian



> Hi Florian,
> 
> I did more testing and I think the slowness is inside the cmis bridge 
> server and kind of randomly, the second call below take 15.306 end to 
> end (17:55:06 - 17:55:21), but only 5 seconds in FileNet CMIS
> (17:55:16 - 17:55:21), I am wondering if there are any "lock and/or 
> waiting" in the cmis bridge.
> 
> CMIS bridge access log:
> 2016-12-21      17:54:09        3.008   GET
> /cmisbridge/atom/myrepository/content/?ID=idd_8016FF58-35FF-4147-81A4-07AA990EDBBD
>    200
> 2016-12-21      17:55:21        15.306  GET
> /cmisbridge/atom/myrepository/content/?ID=idd_8016FF58-35FF-4147-81A4-07AA990EDBBD
>    200
> 2016-12-21      17:55:23        1.141   GET
> /cmisbridge/atom/myrepository/content/?ID=idd_8016FF58-35FF-4147-81A4-07AA990EDBBD
>    200
> 
> FN CMIS access log (I enabled "time-taken" log on FileNet CMIS server):
> 2016-12-21      17:54:06        0.017   GET
> /fncmis/resources/Service?repositoryId=myrepository  200
> 2016-12-21      17:54:07        0.105   GET
> /fncmis/resources/myrepository/Content/idd_8016FF58-35FF-4147-81A4-07A
> A990EDBBD?filter=&includeAllowableActions=&includeACL=
> 200
> 2016-12-21      17:54:09        2.725   GET
> /fncmis/resources/myrepository/ContentStream/idd_8016FF58-35FF-4147-81A4-07AA990EDBBD/0/Report+E901.pdf
>      200
> 2016-12-21      17:55:16        0.021   GET
> /fncmis/resources/Service?repositoryId=myrepository  200
> 2016-12-21      17:55:16        0.104   GET
> /fncmis/resources/myrepository/Content/idd_8016FF58-35FF-4147-81A4-07A
> A990EDBBD?filter=&includeAllowableActions=&includeACL=
> 200
> 2016-12-21      17:55:21        4.693   GET
> /fncmis/resources/myrepository/ContentStream/idd_8016FF58-35FF-4147-81A4-07AA990EDBBD/0/Report+E901.pdf
>      200
> 2016-12-21      17:55:22        0.017   GET
> /fncmis/resources/Service?repositoryId=myrepository  200
> 2016-12-21      17:55:22        0.089   GET
> /fncmis/resources/myrepository/Content/idd_8016FF58-35FF-4147-81A4-07A
> A990EDBBD?filter=&includeAllowableActions=&includeACL=
> 200
> 2016-12-21      17:55:23        0.946   GET
> /fncmis/resources/myrepository/ContentStream/idd_8016FF58-35FF-4147-81A4-07AA990EDBBD/0/Report+E901.pdf
>      200
> 
> Thanks
> Wentao
> 
> 
> -----Original Message-----
> From: Florian Müller [mailto:[email protected]]
> Sent: 2016, December 21 12:14 PM
> To: Lu, Wentao; [email protected]
> Subject: Re: Slow when call cmis bridge using pure http call after a 
> few days
> 
> 
> Hi Wentao,
> 
> Because your clients don't manage cookies, the LRU Cache 
> implementation is a better fit 
> (org.apache.chemistry.opencmis.bridge.lrucache.LruCacheBridgeServiceFactory).
> With the HttpSessionBridgeServiceFactory and without cookies you are 
> accumulating a lot of useless session objects on the bridge. Please 
> check if you see the same symptoms with the LRU cache.
> 
> If you download documents frequently, please remove this line:
> httpConnGetContent.disconnect();
> Without it sockets to the bridge can be reused and SSL handshakes can 
> be avoided.
> 
> Also make sure that you always read the full content, even if an error 
> occurs somewhere. Otherwise the socket can get stuck.
> 
> 
> - Florian
> 
>> Hi Florian,
>> 
>> Thanks for your help again.
>> 
>> At the moment, I am not 100% sure if the slowness is occurred on 
>> FileNet CMIS server or on the CMIS bridge server, as if I restart the 
>> bridge server, it back to 3 seconds.
>> 
>> Does it stay slow or do you only see spikes?   Wentao:  It stay slow 
>> until I restart bridge server.
>> 
>> Are you using HTTP sessions and cookies for the cache? If so, does 
>> the client always send the correct (current) cookies?
>> 
>> Wentao:  we extended the "HttpSessionCmisService" from the bridge 
>> library, we did not set cookie in client code, snip of the client 
>> code as below:
>> 
>>         String cmisGetContentPrefix = 
>> "https://myserver/cmisbridge/atom/myrepository/content/?ID=";;
>>         URL urlGetContent = new URL(cmisGetContentPrefix+idd);
>>         HttpURLConnection httpConnGetContent = 
>> (HttpURLConnection)urlGetContent.openConnection();
>>         httpConnGetContent.setRequestProperty("Authorization","Basic
>> "+ authStr);
>>         InputStream inputStream = httpConnGetContent.getInputStream();
>>         response.setHeader("Content-Type",
>> httpConnGetContent.getContentType());
>>         response.setHeader("Content-Disposition",
>> httpConnGetContent.getHeaderField("Content-Disposition"));
>>         int bytesRead = -1;
>>         byte [] buffer = new byte[64000];
>>         while ((bytesRead = inputStream.read(buffer)) != -1){
>>             response.getOutputStream().write(buffer,0,bytesRead);
>>         }
>>         inputStream.close();
>>         httpConnGetContent.disconnect();
>> 
>> Thanks
>> Wentao
>> 
>> -----Original Message-----
>> From: Florian Müller [mailto:[email protected]]
>> Sent: 2016, December 21 9:00 AM
>> To: [email protected]
>> Cc: Lu, Wentao
>> Subject: Re: Slow when call cmis bridge using pure http call after a 
>> few days
>> 
>> Hi Wentao,
>> 
>> The log excerpt shows that the getRepositoryInfo call takes most of 
>> the time. Why it takes that long should be answered by a FileNet 
>> expert (Jay?).
>> 
>> The log excerpt also shows that you are creating a new OpenCMIS 
>> session to your FileNet server on the bridge. If you can cache the 
>> OpenCMIS session object on the bridge, you avoid the 
>> getRepositoryInfo call and save a lot of time.
>> Probably you already do that but your cache evicts the session object 
>> at some point. The next request has to set up a new session that then 
>> calls getRepositoryInfo again, which takes time. That would explain 
>> why it suddenly gets slower.
>> 
>> Does it stay slow or do you only see spikes?
>> Are you using HTTP sessions and cookies for the cache? If so, does 
>> the client always send the correct (current) cookies?
>> 
>> 
>> Btw. Use the Browser Binding, if you can. It's faster.
>> 
>> 
>> - Florian
>> 
>> 
>> 
>>> Hi,
>>> 
>>> We have a custom code which can't use OpenCMIS Client library, we 
>>> asked them to use pure http call by assembly the getContentStream 
>>> url with http basic header. The access is via cmis bridge (version
>>> 0.10) to backend FileNet CMIS.
>>> 
>>> The call was fast (less than 3 second) at the beginning, but after a 
>>> few days, it become slow, the response time was 20 seconds until we 
>>> restart cmis bridge instance, access log as below
>>> 
>>> CMIS bridge accesslog
>>> 2016-12-14      16:32:02        20.551  GET
>>> /cmisbridge/atom/myrepository/content/?ID=idd_8413BC70-2875-4517-A709-84D0D7AF9803
>>>    200
>>> 
>>> FileNet CMIS log
>>> 127.0.0.1 - myview [14/Dec/2016:16:31:51 -0800] "GET 
>>> /fncmis/resources/Service?repositoryId=myrepository HTTP/1.1" 200
>>> 20978
>>> 127.0.0.1 - myview [14/Dec/2016:16:32:01 -0800] "GET 
>>> /fncmis/resources/ myrepository 
>>> /Content/idd_8413BC70-2875-4517-A709-84D0D7AF9803?filter=&includeAll
>>> o
>>> wableActions=&includeACL=H
>>> TTP/1.1" 200 30753
>>> 127.0.0.1 - myview [14/Dec/2016:16:32:01 -0800] "GET 
>>> /fncmis/resources/myrepository/ContentStream/idd_8413BC70-2875-4517-
>>> A
>>> 709-84D0D7AF9803/0/Report+E707.pdf
>>> HTTP/1.1" 200 993683
>>> 
>>> I am wondering if there were any resources not been released 
>>> properly when we use http call directly, any ideas where the 
>>> slowness may come from? The other client apps using opencmis java or 
>>> .net library do not have this issue.
>>> 
>>> Thanks
>>> Wentao
>>> ________________________________
>>> This email and its attachments are intended solely for the personal 
>>> use of the individual or entity named above. Any use of this 
>>> communication by an unintended recipient is strictly prohibited. If 
>>> you have received this email in error, any publication, use, 
>>> reproduction, disclosure or dissemination of its contents is 
>>> strictly prohibited. Please immediately delete this message and its 
>>> attachments from your computer and servers. We would also appreciate 
>>> if you would contact us by a collect call or return email to notify 
>>> us of this error. Thank you for your cooperation.
>>> -BCHydroDisclaimerID5.2.8.1541

Reply via email to