Por la documentación :
connection.end()
se supone que debe llamarse solo cuando deja de enviar consultas a MySQL, es decir, cuando su aplicación se detiene. No debe crear/terminar conexiones todo el tiempo:simplemente use la misma conexión para todas sus consultas (o use un grupo de conexiones para ser más eficiente).