
UNSOLVED
Intermittent Performance Issue Retrieving From Centera
Hi all,
We have been experiencing intermittent performance issues when retrieving from our Centera device and I'm hoping someone can help us. We're storing about 8.5 million documents, most of which contain a couple of 100 KB images. I'm using the latest EMC Centera SDK and .Net wrapper. Many of our retrieves from the Centera device come back in a second or less, but every now and then (there doesn't seem to be a pattern, sometime it's the first one, the tenth, or the hundredth retrieve), a retrieve will take 90 seconds or more, even for a clip with just two 100 KB images in it. It eventually comes back with the document, but oftentimes our front-end times out waiting.
We were originally using the XAM.NET wrapper to interface with the Centera device. Thinking that the problem might lie in the XAM.NET wrapper, we swapped it out for the COSI .NET wrapper for Centera on our retrieves, but the problem remained. Our Centera access logic is located in a web service that our front-end apps call, but we've also tried pulling it out into a Windows app and hitting the Centera directly, but to no avail. We've also tried using a single pool for all requests as well as creating and then closing and disposing of the pool for each individual request - both approaches yielded the same result - interittend long delays retrieving a doc.
Here's the code we're using to retrieve a document from the Centera device:
...
pool = New FPPool(clusterAddress)
Using clipRef = New FPClip(pool, contentAddress, FPMisc.OPEN_ASTREE)
For Each tag As FPTag In clipRef.Tags
Dim tagName = tag.ToString
If tagName.Contains("PageNumber") Then
Dim len = tag.BlobSize
' Retrieve the blob into a buffer
Dim blobSize As Integer = CInt(tag.BlobSize)
Dim converter As New UTF8Encoding()
Dim buffer As Byte() = New Byte(blobSize) {}
Dim source As IntPtr = Marshal.AllocHGlobal(blobSize)
Using streamRef = New FPStream(source, blobSize, FPStream.StreamDirection.OutputFromCentera)
tag.BlobRead(streamRef)
Marshal.Copy(source, buffer, 0, blobSize)
Marshal.FreeHGlobal(source)
streamRef.Close()
End Using
Dim pageNumber = tagName.Replace("PageNumber", "")
myPage = New PageEntity(docId, "Page" & pageNumber, document.DocumentName, buffer)
document.Pages.Add(myPage)
End If
startTime = Now
tag.Close()
tag.Dispose()
Next
clipRef.Close()
End Using
...
I've attached a Centera log file. To generate this file, I made 33 consecutive retrieve requests for 33 separate 2-page documents. There were two docs that experienced a delay:
1. A 19 second delay at 2011-10-26 13:18:02.162. This appears to be occurring in my tag.BlobRead(streamRef) call.
2. An 18 second delay at 2011-10-26 13:18:27.177. This appears to be occurring in my New FPClip(pool, xuid.ContentAddress, FPMisc.OPEN_ASTREE) call.
I can provide a log for a larger sample size if needed. In many cases, the delay is much longer than 19 seconds. These two calls (tag.BlobRead and New FPClip) seem to be the ones that consistently cause the delay.
Thank you for any help you can provide,
Jon
1 Attachment
sdk.log
sdk.log
Responses (0)
Solutions (0)
