для корректного анализа, надо смотреть картину в динамике чтобы видеть какая именно память растет. Если кэш то как сказал предыдущий оратор всё ОК. поставте какой нибудь простой мониторинг ресурсов типа monit или collectd, графики покажут вам всё что нужно.
практически все современные свичи поддерживают bounding, то есть объединение 2-х (и более) сетевых интерфейсов в один (на стороне сервера). Это делается для избыточности, либо как в вашем случае для увеличения полосы.
соответственно вам надо узнать у хостера, поддерживают ли они эту feature и если да, то все решается очень просто.
настройте в monit перезапуск apache при достижении лимита занятой памяти
это лечится параметрами запуска, о чем и написано в след предложении
что такого удивительного вы хотите там увидеть ?
https://gist.github.com/945d28c7ddc3ba6a0df9
этот вариант подходит только если md5 эталонного файла можно посчитать, в противном случае надо действовать по другому
посчитать md5 файла if есть сохраненный md5 ? if md5 текущего файла != записанное значение md5 перезаписать файл fi else записать md5 в файл fi
скрипт не нужен, ибо велосипед уже изобретен и называется rsync
$ rsync -va /my/source/file /my/target/file
проверять права, размер или контрольную сумму всё это настраивается через параметры rsync
в подобной ситуации когда нужно было чистить очень большой кэш nginx-а я написал скрипт который удалял 1k файлов и делал sleep. и запускал его с низким приоритетом.
всё таки отвечу на заданный вопрос,
1) кэш в nginx можно чистить просто удалением файлов из соответствующего каталога. find /cache -type f и так далее. nginx переживает такую операцию без всяких последствий
2) есть пач http://labs.frickle.com/nginx_ngx_cache_purge/ который позволяет делать тоже самое через http . Во FreeBSD этот пач включен в порт nginx
оптимальный вариант как раз и описан в статье master-master, если сервера не очень далко друг от друга то всё будет как ты хочешь.