минимизировать число вызовов API ВКонтакте. Для ответа 1 пользователю нужно а) пометить прочитанным входящее сообщение и б) отправить ответ. Это 2 вызова API. До 25 вызовов API можно упаковать в один execute() – так получится отвечать 12 пользователям за 1 вызов execute() и при лимите в 3 вызова в секунду – 36 пользователям в секунду.
следить за кол-вом вызовов в секунду и не превышать этот лимит: где-то, например, в Redis, держать времена трёх последних вызовов к API. При желании выполнить очередной доставать эти времена и принимать решение: выполнять сразу или подождать N миллисекунд.
очередь – сообщения обрабатывать не мгновенно при получении сигнала от callback api, а помещать их в очередь. Рабочий процесс берёт из очереди задачи и выполняет – группирует в пачки по 24 и отправляет – с учётом времени предыдущих трёх овтетов.
При такой организации вам хватит одного слабенького сервера и вы сможете приблизиться к теоретическому пределу в 36 сообщений в секунду.