Gemini Community Support Site

This Gemini community support site can be used to find solutions to product issues. You can log in using Open Id, Google Profile and even Facebook. Feel free to ask a question or browse FAQs and documentation. Product tour videos are also available along with how-to videos demonstrating key Gemini capabilities.




Optimize Performance

web-app

Hi,

I'm having some problems with performance, and I'm trying to trace all the process to check if the problem is in gemini, in my sql server, in my IIS, in my network, ...

Some questions to try understand some processes:

1º In gemini log I have a lot of messages like this: Information Gemini No Page.Request.UrlReferrer detected : /Gemini/issue/ViewIssue.aspx

Is this normal?

2º Also have a lot of: Error Gemini Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at NHibernate.AdoNet.AbstractBatcher.ExecuteNonQuery(IDbCommand cmd) at NHibernate.AdoNet.NonBatchingBatcher.AddToBatch(IExpectation expectation) at NHibernate.Persister.Entity.AbstractEntityPersister.Update(Object id, Object[] fields, Object[] oldFields, Object rowId, Boolean[] includeProperty, Int32 j, Object oldVersion, Object obj, SqlCommandInfo sql, ISessionImplementor session)

Any chances to get more info about the cause of the timeout? Or the best way is with sql profiler?

3º Even without click in rss button I'm getting some errors like this:

Feed/Rss could not execute query [ SELECT this.issueid as issueid389, this.projectid as projectid389, this.projectcode as projectc3389, this.projectname as projectn4389, this.typedesc as typedesc389, this.prioritydesc as priority6389, this.severitydesc as severity7389, this.statusdesc as statusdesc389, this.resdesc as resdesc389, this.reporteddesc as reporte10389, this.versionname as version11389, this.issuetypeid as issuety12389, this.issuepriorityid as issuepr13389, this.issueseverityid as issuese14389, this.priorityseq as priorit15389, this.severityseq as severit16389, this.statusseq as statusseq389, this.issuestatusid as issuest18389, this.issueresolutionid as issuere19389, this.reportedby as reportedby389, this.fixedinversionid as fixedin21389, this.summary as summary389, this.longdesc as longdesc389, this.created as created389, this.revised as revised389, this.issuekey as issuekey389, this.versionnumber as version27389, this.versiondesc as version28389, this.versionorder as version29389, this.versionarchived as version30389, this.versionreleased as version31389, this.startdate as startdate389, this.duedate as duedate389, this.resolveddate as resolve34389, this.closeddate as closeddate389, this.issuerisklevelid as issueri36389, this.issuevotes as issuevotes389, this.userdata1 as userdata38389, this.userdata2 as userdata39389, this.userdata3 as userdata40389, this.percentcomplete as percent41389, this.estimatedays as estimat42389, this.estimatehours as estimat43389, this.estimateminutes as estimat44389, this.riskdesc as riskdesc389, this.visibility as visibility389, this.visibilitymembertype as visibil47389, this.parentissueid as parenti48389, this.originatortype as origina49389, this.originatorreply as origina50389, this.originatordata as origina51389, this.originatorprocessed as origina52389, this.tstamp as tstamp389, comments1.issueid as issueid11, comments1.commentid as commentid11, comments1.commentid as commentid390, comments1.userid as userid390, comments1.issueid as issueid390, comments1.projectid as projectid390, comments1.comment as comment390, comments1.username as username390, comments1.isclosing as isclosing390, comments1.visibility as visibility390, comments1.visibilitymembertype as visibili9390, comments1.created as created390, comments1.tstamp as tstamp390, customfiel2.issueid as issueid12, customfiel2.customfielddataid as customfi112, customfiel2.customfielddataid as customfi1141, customfiel2.customfieldid as customfi2141, customfiel2.userid as userid141, customfiel2.projectid as projectid141, customfiel2.issueid as issueid141, customfiel2.fielddata as fielddata141, customfiel2.created as created141, customfiel2.tstamp as tstamp141, timeentrie3.issueid as issueid13, timeentrie3.entryid as entryid13, timeentrie3.entryid as entryid442, timeentrie3.projectid as projectid442, timeentrie3.issueid as issueid442, timeentrie3.userid as userid442, timeentrie3.timetypeid as timetypeid442, timeentrie3.hours as hours442, timeentrie3.minutes as minutes442, timeentrie3.comment as comment442, timeentrie3.timeentrydate as timeentr9442, timeentrie3.created as created442, timeentrie3.tstamp as tstamp442, affectedve6.issueid as issueid14, affectedve6.affectedversionid as affected114, affectedve6.affectedversionid as affected1413, affectedve6.issueid as issueid413, affectedve6.versionid as versionid413, affectedve6.created as created413, affectedve6.tstamp as tstamp413, versionen12.versionid as versionid254, versionen12.projectid as projectid254, versionen12.versionnumber as versionn3254, versionen12.versionname as versionn4254, versionen12.versiondesc as versiond5254, versionen12.versionreleased as versionr6254, versionen12.versionorder as versiono7254, versionen12.versionarchived as versiona8254, versionen12.startdate as startdate254, versionen12.releasedate as release10254, versionen12.parentversionid as parentv11254, versionen12.created as created254, versionen12.tstamp as tstamp254, resources4.issueid as issueid15, resources4.issueresourceid as issueres115, resources4.issueresourceid as issueres1425, resources4.issueid as issueid425, resources4.userid as userid425, resources4.created as created425, resources4.tstamp as tstamp425, useren14.userid as userid346, useren14.username as username346, useren14.firstname as firstname346, useren14.surname as surname346, useren14.pwd as pwd346, useren14.emailaddress as emailadd6346, useren14.roles as roles346, useren14.created as created346, useren14.lastupdated as lastupda9346, useren14.ResetPWD as ResetPWD346, useren14.active as active346, useren14.comment as comment346, useren14.apikey as apikey346, useren14.logindate as logindate346, useren14.previouslogindate as previou15346, useren14.tstamp as tstamp346, useren14.firstname + ' ' + useren14.surname as formula136, components5.issueid as issueid16, components5.issuecomponentid as issuecom116, components5.issuecomponentid as issuecom1437, components5.issueid as issueid437, components5.componentid as componen3437, components5.created as created437, components5.tstamp as tstamp437, componente16.componentid as componen1318, componente16.projectid as projectid318, componente16.componentname as componen3318, componente16.componentdesc as componen4318, componente16.componentreadonly as componen5318, componente16.userid as userid318, componente16.parentcomponentid as parentco7318, componente16.created as created318, componente16.tstamp as tstamp318 FROM geminiissuesview this left outer join geminiissuecomments comments1 on this.issueid=comments1.issueid left outer join geminicustomfielddata customfiel2 on this.issueid=customfiel2.issueid left outer join geminitimetracking timeentrie3 on this.issueid=timeentrie3.issueid left outer join geminiaffectedversions affectedve6 on this.issueid=affectedve6.issueid left outer join geminiversions versionen12 on affectedve6.versionid=versionen12.versionid left outer join geminiissueresources resources4 on this.issueid=resources4.issueid left outer join geminiusers useren14 on resources4.userid=useren14.userid left outer join geminiissuecomponents components5 on this.issueid=components5.issueid left outer join geminicomponents componente16 on components5.componentid=componente16.componentid WHERE ((this.visibilitymembertype=2 and @p0 in (select gg.userid from geminiglobalgroupmembership gg where gg.globalgroupid = this.visibility)) or (this.visibilitymembertype=3 and @p1 in (select pg.userid from geminiprojectgroupmembership pg where pg.projectgroupid = this.visibility))) AND this.projectid in (@p2) and not (this.issuestatusid in (@p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10)) ORDER BY this.revised desc ] Positional parameters: #0>7 #1>24 #2>23 #3>4 #4>16 #5>12 #6>26 #7>31 #8>25 [SQL: SELECT this.issueid as issueid389, this.projectid as projectid389, this.projectcode as projectc3389, this.projectname as projectn4389, this.typedesc as typedesc389, this.prioritydesc as priority6389, this.severitydesc as severity7389, this.statusdesc as statusdesc389, this.resdesc as resdesc389, this.reporteddesc as reporte10389, this.versionname as version11389, this.issuetypeid as issuety12389, this.issuepriorityid as issuepr13389, this.issueseverityid as issuese14389, this.priorityseq as priorit15389, this.severityseq as severit16389, this.statusseq as statusseq389, this.issuestatusid as issuest18389, this.issueresolutionid as issuere19389, this.reportedby as reportedby389, this.fixedinversionid as fixedin21389, this.summary as summary389, this.longdesc as longdesc389, this.created as created389, this.revised as revised389, this.issuekey as issuekey389, this.versionnumber as version27389, this.versiondesc as version28389, this.versionorder as version29389, this.versionarchived as version30389, this.versionreleased as version31389, this.startdate as startdate389, this.duedate as duedate389, this.resolveddate as resolve34389, this.closeddate as closeddate389, this.issuerisklevelid as issueri36389, this.issuevotes as issuevotes389, this.userdata1 as userdata38389, this.userdata2 as userdata39389, this.userdata3 as userdata40389, this.percentcomplete as percent41389, this.estimatedays as estimat42389, this.estimatehours as estimat43389, this.estimateminutes as estimat44389, this.riskdesc as riskdesc389, this.visibility as visibility389, this.visibilitymembertype as visibil47389, this.parentissueid as parenti48389, this.originatortype as origina49389, this.originatorreply as origina50389, this.originatordata as origina51389, this.originatorprocessed as origina52389, this.tstamp as tstamp389, comments1.issueid as issueid11, comments1.commentid as commentid11, comments1.commentid as commentid390, comments1.userid as userid390, comments1.issueid as issueid390, comments1.projectid as projectid390, comments1.comment as comment390, comments1.username as username390, comments1.isclosing as isclosing390, comments1.visibility as visibility390, comments1.visibilitymembertype as visibili9390, comments1.created as created390, comments1.tstamp as tstamp390, customfiel2.issueid as issueid12, customfiel2.customfielddataid as customfi112, customfiel2.customfielddataid as customfi1141, customfiel2.customfieldid as customfi2141, customfiel2.userid as userid141, customfiel2.projectid as projectid141, customfiel2.issueid as issueid141, customfiel2.fielddata as fielddata141, customfiel2.created as created141, customfiel2.tstamp as tstamp141, timeentrie3.issueid as issueid13, timeentrie3.entryid as entryid13, timeentrie3.entryid as entryid442, timeentrie3.projectid as projectid442, timeentrie3.issueid as issueid442, timeentrie3.userid as userid442, timeentrie3.timetypeid as timetypeid442, timeentrie3.hours as hours442, timeentrie3.minutes as minutes442, timeentrie3.comment as comment442, timeentrie3.timeentrydate as timeentr9442, timeentrie3.created as created442, timeentrie3.tstamp as tstamp442, affectedve6.issueid as issueid14, affectedve6.affectedversionid as affected114, affectedve6.affectedversionid as affected1413, affectedve6.issueid as issueid413, affectedve6.versionid as versionid413, affectedve6.created as created413, affectedve6.tstamp as tstamp413, versionen12.versionid as versionid254, versionen12.projectid as projectid254, versionen12.versionnumber as versionn3254, versionen12.versionname as versionn4254, versionen12.versiondesc as versiond5254, versionen12.versionreleased as versionr6254, versionen12.versionorder as versiono7254, versionen12.versionarchived as versiona8254, versionen12.startdate as startdate254, versionen12.releasedate as release10254, versionen12.parentversionid as parentv11254, versionen12.created as created254, versionen12.tstamp as tstamp254, resources4.issueid as issueid15, resources4.issueresourceid as issueres115, resources4.issueresourceid as issueres1425, resources4.issueid as issueid425, resources4.userid as userid425, resources4.created as created425, resources4.tstamp as tstamp425, useren14.userid as userid346, useren14.username as username346, useren14.firstname as firstname346, useren14.surname as surname346, useren14.pwd as pwd346, useren14.emailaddress as emailadd6346, useren14.roles as roles346, useren14.created as created346, useren14.lastupdated as lastupda9346, useren14.ResetPWD as ResetPWD346, useren14.active as active346, useren14.comment as comment346, useren14.apikey as apikey346, useren14.logindate as logindate346, useren14.previouslogindate as previou15346, useren14.tstamp as tstamp346, useren14.firstname + ' ' + useren14.surname as formula136, components5.issueid as issueid16, components5.issuecomponentid as issuecom116, components5.issuecomponentid as issuecom1437, components5.issueid as issueid437, components5.componentid as componen3437, components5.created as created437, components5.tstamp as tstamp437, componente16.componentid as componen1318, componente16.projectid as projectid318, componente16.componentname as componen3318, componente16.componentdesc as componen4318, componente16.componentreadonly as componen5318, componente16.userid as userid318, componente16.parentcomponentid as parentco7318, componente16.created as created318, componente16.tstamp as tstamp318_ FROM geminiissuesview this left outer join geminiissuecomments comments1 on this.issueid=comments1.issueid left outer join geminicustomfielddata customfiel2 on this.issueid=customfiel2.issueid left outer join geminitimetracking timeentrie3 on this.issueid=timeentrie3.issueid left outer join geminiaffectedversions affectedve6 on this.issueid=affectedve6.issueid left outer join geminiversions versionen12 on affectedve6.versionid=versionen12.versionid left outer join geminiissueresources resources4 on this.issueid=resources4.issueid left outer join geminiusers useren14 on resources4.userid=useren14.userid left outer join geminiissuecomponents components5 on this.issueid=components5.issueid left outer join geminicomponents componente16 on components5.componentid=componente16.componentid WHERE ((this.visibilitymembertype=2 and @p0 in (select gg.userid from geminiglobalgroupmembership gg where gg.globalgroupid = this.visibility)) or (this.visibilitymembertype=3 and @p1 in (select pg.userid from geminiprojectgroupmembership pg where pg.projectgroupid = this.visibility))) AND this.projectid in (@p2) and not (this.issuestatusid in (@p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10)) ORDER BY this_.revised desc] NHibernate

Any chances to turn off rss feeds?

jsaraiva
· 1
jsaraiva
Replies (6)
helpful
0
not helpful

You can safely ignore the no referer logs.

As for the timeout and RSS it seems to me that they might be related.
It might be that your database is fragmented and have slowed down.
Please try and update statistics on the gemini_issues table.

When do you get the timeout error?


Mark Wing
· 9108
Mark Wing
helpful
0
not helpful

I get it usually when tried, for example, to get the issues of some users, or when tried to get the issues with a saved filter that have more or less 20 components.

But if I don't click in RSS feed button and I know that nobody is getting rss feed in my test site, why I get queries of them?


jsaraiva
· 1
jsaraiva
helpful
0
not helpful

Does it always happen? Which version of SQL Server?
As for the RSS, if no one clicks on it then it shouldn't execute. How do you know that no one is usingi t?


Mark Wing
· 9108
Mark Wing
helpful
0
not helpful

No, it happen sometimes. I can't understand what trigger the RSS. In last version (3.5.3) I have turn off RSS override feed.ashx to do nothing, because the same problem. In that time I have used fiddler to show that the feed.ashx was executed without click in RSS button or call by a rss client.

Sql Server 2005.

I know that because I tried that, when I was the only person using the site with localhost (I turn off IIS for external access)

Today I'm tracing prodution DB with SQL Profiler, when it completed I will tell you the conclusions.


jsaraiva
· 1
jsaraiva
helpful
0
not helpful

Hi,

About this and after some time viewing logs of sql profiler, wireshark, fiddler,... , I think the main problem is in my network.

But the gemini query that get the list of issues, can't be improved?

For example, I have one user with 31 issues, and that query return us more than 8000 records.

This is because the using os a several 'left outer joins', like the one to customfields and entrytimes. And I have a lote of custom fields (in my main project more or less 10), and an average of 4/5 resources that log times.

At the same time in my main project I have a lot of comments with huge texts.

With all of this, every the time that a user get the issues in the project the pageload have an average duration of at least 5 seconds.

I know that query is as is because the customize option of the issue list. But in my case I have a lot of record with almost the same fields equals (the ones that aren't equals are custom fields and time entries).

It will be great if, if I haven't select the comments field to customize my list, that the query don't get it. Or instead of get this in only one query, get with 3 or 4 small queries. I think that could be possible and with a better performance.

Thanks.


jsaraiva
· 1
jsaraiva
helpful
0
not helpful

Thanks for the update, we will take your suggestions on-board.


Mark Wing
· 9108
Mark Wing