Eu diria que seus problemas de carga são decorrentes do uso excessivo de espaço de troca devido à falta de memória. Assim que seus aplicativos usarem toda a RAM disponível (1 GB), eles começarão a usar o espaço de troca (1,6 de 2 GB usado), o que aumentará sua carga de IO (81,0% wa).
Você quase nunca quer que seu servidor LAMP tenha que usar o espaço de troca, pois, como você percebeu, isso prejudica completamente o desempenho do servidor. Para não usar o swap, você precisa limitar o uso de memória do seu aplicativo:
- Reduza o número máximo de clientes Apache, normalmente com
MaxClients
. Com apenas 1GB de RAM você provavelmente quer limitar o Apache a usar 500MB ou menos, o que significa queMaxClients
de apenas 8 pode ser necessário (500MB / 60MB por processo = 8). Você pode jogar com esse número e, se o servidor começar a trocar, reduza-o e reinicie o Apache. - Possivelmente reduza o uso de memória do MySQL. Já que você só tem 1GB de RAM, você pode querer limitar o uso do MySQL. De sua saída superior, parece bem no momento, mas se aumentar muito, você pode ter que jogar com a configuração. A "quantia certa" de RAM para dar ao MySQL depende do banco de dados e do aplicativo. Eu poderia dar um pesado aplicativo de 500MB mas um muito leve apenas 50MB.
- Monitore o uso da memória em todos os outros aplicativos em execução. Ter apenas 1 GB em um servidor LAMP limita a quantidade de memória que você pode fornecer para tudo o que, em última análise, limitará sua capacidade de servir.