Installing ICP in a Linux Virtual Machine on Microsoft Azure platform requires a few additional steps to ensure optimal performance of the system, please continue to the appropriate section:
Before Installation - Selecting the Virtual Machine type
Azure offers a number of different instance types with varying degrees of performance and intended usage. At the time of writing (2021-01-01) we recommend the D4d v4 instance from the "Dd v4 series" (as listed here: https://azure.microsoft.com/en-us/pricing/details/virtual-machines/linux/). Certain actions in ICP, such as re-index require high disk throughput in order to avoid performance impact. D4d v4 instance is our instance of choice in terms of price and performance.
Installation
To install the ICP please follow the basic instructions for Linux machines here: Install ICP
After Installation - TCP Keepalive configuration
By default Azure has the "Idle timeout" setting set to 4min, which can cause the idle remote support sessions to be killed by Azure which will cause a session reconnect and a poor user experience.
To avoid this issue make the following changes:
Linux - change tcp keepalive settings
echo 110 > /proc/sys/net/ipv4/tcp_keepalive_time
echo 10 > /proc/sys/net/ipv4/tcp_keepalive_intvl
echo 6 > /proc/sys/net/ipv4/tcp_keepalive_probes
In the example above you can see the settings used for our Azure server: wait for 110s to send a keepalive probe then resend it every 10s. After 6 retries without ACK mark connection as dead.
Note: You can set this settings according to your needs, making sure that the tcp_keepalive_time is lower than the Azure "Idle timeout" time, otherwise the sessions will be dropped by Azure.
ICP - enable TCP keepalive setting
In ICP configuration pages (<server_address>/conf) enable the following setting in order for the TCP connection to be started using the -keepalive flag, making it respect the system TCP keepalive settings.
1) Under Configuration - General set the setting "Show debugging menu" to "yes".
2) Under newly shown menu Flags - dev check the checbox for "TCP keep alive" setting.