Primeiro, embora seja apenas relacionado de forma tangencial, você provavelmente deve procurar mudar do MyISAM para o InnoDB. Ele terá um desempenho melhor sob o tipo de concorrência que você provavelmente tem e é muito menos provável que perca dados no caso de uma falha.
Quanta memória você está alimentando na instância do memcached? Aumentar isso pode ajudar se as suas expulsões e erros forem altas, mas isso exigirá alguma experimentação.
128 MB é definitivamente muito baixo de um key_buffer considerando o tamanho do seu conjunto de dados e a RAM disponível. Eu diria que deveria ser mais como 1-2GB se você puder poupar a RAM (ou, se você mudar para o InnoDB, substituir "key_buffer" por "InnoDB buffer pool size"). Seus "blocos em" são 3x seus blocos fora, o que provavelmente significa que o MySQL está tendo que acertar o disco para uma porção significante das leituras. Você pode usar o mysqltuner ou as estatísticas no phpmyadmin para ver se coisas como o buffer de classificação, etc. precisam ser ajustadas, mas elas provavelmente não são o maior problema.
Verifique suas estatísticas detalhadas, como taxa de hits no cache de consulta. Há uma boa chance de que você não esteja fazendo nada de bom e deva ser desativado, especialmente porque você também está usando o memcache.
A boa notícia é que você é obrigado a ler em vez de escrever, o que significa que você pode melhorar o desempenho com relativa facilidade por meio de cache. Na pior das hipóteses, se você não tiver memória RAM suficiente para aumentar key_buffer ou memcached e não conseguir expandir seu servidor atual, poderá mover o lighttpd e o memcached para um servidor próximo separado e dedicará todo o ~ 8GB ao MySQL. Com um conjunto de dados de 10 GB, isso será suficiente. Não há necessidade de recorrer a um escravo de replicação por causa do desempenho, embora, como outra pessoa mencionou, seja benéfico para backups e failover.