Частично разобрался в проблеме.
1. Исходная причина, почему fd упирались в 10000 - бешенное число подключений.
Оказалось, что это всё реклама. В настройках mihomo у меня реклама была настроена в DIRECT, т.к. использую некоторые сервисы, которые с заблоченной рекламой работают плохо.
Проблема наблюдалась вечером, когда включал пару АндроидТВ, которые в фоне генерили кучу коннектов в сторону источников рекламы и передачи аналитики.
После переключения всей рекламы в REJECT стало примерно 200-300 fd, на пике 500-600. и проблема ушла.
2. Контроль fd на моем KN-1810 не работает или работает не корректно. Т.е. xkeen не рестартится или рестартится некорректно.
Пока решил это внешним скриптом в кроне, который проверяет раз в минуту количество fd, пишет в лог и при необходимости выполняет xkeen -restart
С рекламой пока решил, что при необходимости на некоторое время переключаю в DIRECT, остальное время включен REJECT.
Пока не понятно почему раньше такого не было. Возможно на АндроидТВ что-то обновилось, а xkeen, mihomo и прошивка роутера ни при чем (т.к. на старых версиях всё так же). Просто совпало.