This guide has been put together to give a general direction on how to improve the performance of your site on a self-hosted environment. However, while we make continuous performance improvements at a software level with each release, most issues such as this are the result of an underperforming, overloaded or misconfigured server.
As a software manufacturer, our ability to troubleshoot this is limited and your host has the best tools and access to the most resources to troubleshoot the issue for you. We would recommend that you consult with your host and if they identify an issue with the software such as a particular query that seems to be posing an issue, please pass along such information and we will be happy to investigate the concern further at that time.
Please also note, IPS provides turnkey Community in the Cloud services. Please see https://www.invisionpower.com/buy/cloud for more information.
The first thing you should look at when it comes to performance, is that you are utilizing the latest versions of items such as PHP and MySQL, that your hosting company provides. This can often provide a performance benefit in of itself.
In addition to the above, ensure you are using any recommended items shown in your admin CP, and ensure you have applied any patches. To check this, go to System>Support>Support, select "Something isnt working correctly" and click on next. If there are any items showing here to be addressed, you should do this before any other item.
MySQL on a lot of servers will tend to use the old MyISAM table engine. While this may be fine for many applications, we recommend that you use INNODB as your table engine for the Invision Suite applications. This can improve performance on applications that have a lot of both read and write actions, such as the Invision Community Suite. This is due to the way in which locking is handled by the MySQL instance, as INNODB supports row level locking, rather than only table level locking.
If you are unsure how to switch to INNODB, you should contact your hosting company on this. The general syntax for changing a table to INNODB is as follows
ALTER TABLE table_name ENGINE=InnoDB;
You can see more information about converting to INNODB in the MySQL documentation at the link below
Caching is an important function of the Invision Community Suite, that allows for some information to be stored in an easy to access format, which has already been processed ready for viewing. These are items such as blocks, and guest viewing of pages, whereby items do not have to be up to date to the second or minute.
By caching information on your site, you speed up the view of that information. In addition, you free up resources for those tasks which do need up to date information. So for example, if you cache all pages for guests, so they see a cached version of each page, your members will benefit from this, as resources will not be hogged by guest users.
The software allows for various methods to store cached information, such as Redis and Memcached. You can also determine how long items are cached for within your admin CP, in System>Settings>Advanced Configuration . For more information on caching, please see the following guide
Archiving, is a way of taking the data away from your topics and posts tables on the forums application, and moving it to a set of archived table. By doing this, you can improve the performance of your main tables. It is very important to note, that this will have negligible benefit on sites other than those that are very large. There is also the trade-off that these items are not searchable, and cannot be interacted with (only viewed) once they are archived.
If you do believe that archiving may benefit your site, you can read more about this function in the following guide
Within the Invision Community platform, there are tasks that are performed by your site on a periodic bases. These can be everything from updating views, to creating cache items, or deleting logs. Your sites performance can be affected if these tasks are not run properly, at the times it needs to.
By default the task system runs 'With Traffic'. This means that a little bit of the tasks will be run each time a user does something on your site, or even views a page. We recommend that this is switched to use cron on your server. cronis a scheduled task system available on most servers, which can run the tasks for you. This means it is then no longer running with traffic on the site.
You can read more about tasks, and how to change methods, including cron and Webservice methods, in the following guide
It is possible to configure external services, in order to support the performance of your site. This may be that you offload your search facility, or move some of your stored files to another location to gain a performance benefit.
Elastic search allows you to offload searching to a dedicated elastic search instance, either on your own server, or a server elsewhere. Being a dedicated platform for this, the performance is greatly improved, and affects many other areas of the site such as activity streams.
Setting up of elastic search itself is not something that is within the scope of this guide. You should contact your hosting company, or an external provider of elasticsearch, in order to use this service. Once you have this set up, you switch to elastic search by selecting this option, and adding your elastic server details, in the following location
System -> Settings -> Search
The Invision Community platform allows you to move the location of stored items, to another location should you wish to do so. This means you can take load off your own server in some cases such as S3, or even moving items to other drives on your own server. The methods allowed are
- File System - Default option which is sufficient for most environments.
- Amazon S3 - Remote storage system recommended for very busy sites.
- Database - Use if you do not have much file storage space available or file writes are undesirable for your server environment. Will require more server resources to display a file.
You can read more about these methods in our guides below