Menu

Search

InstantASP Support

Help & Support


Optimizing InstantForum for large communities


Best Practices

Whilst we’ve designed InstantForum to be as performant as possible we do have a few additional suggestions you can use to further optimize your InstantForum installation.

Ensure full text search is enabled

To reduce load on your database server we would strongly suggest you enable and take advantage of the full text search capabilities offered by InstantForum. For instructions on how to set-up full text search please see Enabling Full Text Search within InstantForum.

Disable Hidden Member Groups

InstantForum allows you to set any member group as a hidden member group. This allows you to hide users (and post from those users) who have the hidden member group as their primary member group. If possible we would suggest disabling hidden member group.

Hidden member groups require any additional quite complex sub query within the main if_sp_SelectTopicsPaged stored procedure which could impact performance for larger sites.
To disable hidden member groups you’ll need to visit the InstantForum Administrator Control Panel. Within the Admin CP visit the Forum Settings page. On the Forum Settings page locate the “Allow Hidden Member Groups” option and ensure this is disabled. Save your settings.

Disable Similar Topics

Similar topics are displayed by default below every topic within your InstantForum community. The similar topics are returned by taking keywords from the topic you are viewing and searching for other topics containing those keywords within your InstantForum database.
Whilst enabling full text search as detailed above can assist with similar topics performance if you wish to save an additional query on every topic page and reduce load on your database server we would suggest disabling similar topics.

To disable similar topics again from the Admin CP > Forum Settings page ensure the “Show Similar Topics” option is disabled.

Disable Unnecessary Homepage Widgets

The InstantForum homepage contains several helpful widgets. For example we show you recently online members, featured or pinned topics, the latest poll, forum statistic etc.

Each of these widgets are loaded asynchronously via a JSON web service to avoid impacting the initial load time of the InstantForum homepage. However each widget can add additional load on your database server as each widget may require an additional database query if the data is not already cached in memory.

To reduce the number of initial database queries for larger performance critical communities we would suggest disabling all of these extra widgets. Whilst helpful they are often not necessary. We would suggest simply leaving the forum index visible on your homepage.

To hide the additional widgets please edit each permission set via the InstantForum Admin CP and ensure the following options are disabled…

Homepage

  • Show latest posts panel?
  • Show popular tags panel?
  • Show recently online panel?
  • Show pinned topics panel?
  • Show latest poll panel?

Forum Activity Options

  • Can view forum activity panel?
  • Miscellaneous Options
  • Can view current permissions

HTTP Compression

InstantForum takes advantage of the compression features built into IIS by default for both static and dynamic files. You can see below the XML section within the InstantForum web.config that defines the compression options…

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">

<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" />
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/x-javascript; charset=utf-8" enabled="true" />
<add mimeType="application/json" enabled="true" />
<add mimeType="application/json; charset=utf-8" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/x-javascript; charset=utf-8" enabled="true" />
<add mimeType="application/atom+xml" enabled="true" />
<add mimeType="application/xaml+xml" enabled="true" />
<add mimeType="application/json" enabled="true" />
<add mimeType="application/json; charset=utf-8" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" doDynamicCompression="true" />

Ensure HTTP compression is enabled for static files

Within the urlCompression element shown above we would always suggest enabling HTTP compression for static files – doStaticCompression = true

Toggle HTTP compression for dynamic files

For larger communities with heavy load on your web server(s) it’s worth assessing the impact of dynamic compression on your page load times verses the load placed on your server CPU. If for example you notice heavier CPU usage but very little obvious load time benefit to enabling dynamic compression it may make sense to simply disable dynamic compression.

You would disable this by setting the doDynamicCompression attribute within the urlCompression element to false within the InstantForum web.config.

Use a physical license file

For licensing purposes InstantForum will check the URL you’re using to access your InstantForum installation against our licensing servers. This check only ever happen on the very first request. To avoid further requests the result (true or false) from our licensing servers is cached locally in memory on your web servers until the ASP.NET process is recycled.

To avoid your installation having to call our licensing servers for this very first request whenever the ASP.NET process recycled we would suggest deploying a physical license file within your InstantForum installation. This physical license file will prevent the call home.
To obtain a physical license file for your installation please open a support ticket and let us know the URLs you’ll need a physical license for.

Consider using Azure Blob storage

If you have community will have thousands of images embedded within posts we would suggest separating the serving of these static image files from your application server(s). InstantForum supports Azure blob storage out the box to assist with this and also offers an extensible storage provider to allow you to implement your own storage mechanism for user uploaded content.
To learn how to use the Azure blob storage provider please see Using Windows Azure Blob Storage Within InstantForum.

Ensure HTTP Expiry Header is set

This will help reduce the load on your application servers by caching files locally on the file until they change on your server. This is a change you’ll need to make within IIS.

  1. Open IIS manager (inetmgr).
  2. Select website for which you want to make settings for headers.
  3. Double click on Http Response Headers
  4. From Action pane (right pane) click on Set Common Headers.
  5. Check Expire Web Content and desired value. One year is recommended.

HTTP Handlers

Consider disabling any unnecessary HTTP handlers within IIS. For example a common HTTP module that is included you probably don’t need is the Classic ASP module.
IIS Application Pool

.NET Version

We would suggest an integrated .NET 4.0 application pool for InstantForum.
Within the InstantForum web.config we would suggest targeting NET 4.5…

Change

<httpRuntime targetFramework="4.0"

To

<httpRuntime targetFramework="4.5"

.NET 4.5 offers some additional JIT compilation improvements.

Debug Mode

Ensure the debug flags within the InstantForum web.config are set to false. You should ensure the InstantASP_DebugMode application setting is set to false and the compilation elements debug attribute is set to false. You can see this below...

InstantASP_DebugMode (web.config application setting)

<add key="InstantASP_DebugMode" value="false" /> 

Complication Debug

<compilation debug="false">

Application Pool Settings

Each application pool has additional settings that may be helpful for larger communities…

ASP Threads Per Processor Unit

It specifies the maximum number of worker threads can be created. The default value is 25 and maximum can be 100. The ideal value for this is the number of threads that can consume less than 50% of processor time. You can set it to 50 and test performance.
ASP Queue Length property

This property decides how often server should send error 503 (Server is too busy). When you set value too low server will send error 503 frequently and if you set it too high server will wait till the existing requests processed and responsiveness to user will be low. Watch queue on high traffic and set value accordingly.

Other Considerations

  • Consider disabling IIS logging or reducing the amount of data logged
  • Consider enabling output caching within IIS
  • Consider enabling load balancing

That's It!

We hope these tips help you get the best possible performance from InstantForum. If you have any suggestions or questions we'd love to hear from you.


Related Links



Optionally provide private feedback to help us improve this article...

Thank you for your feedback!


Comments require login or registration.

Details

Product: InstantForum
Type: INFO
Rated 5 stars based on 1 vote
Article has been viewed 3.3K times.
Last Modified: 2 Years Ago
Last Modified By: Ryan Healey

Options

Similar Articles