centos如何释放内存与crontab

我的系统是具有2G内存的Centos 5.5,我没有权限设置交换。 我已经设置了每天3:00用crontab重启mysqld, httpd ,而且我也想每隔一小时释放一次内存。

那么如何用crontab释放内存? 我从网上写下一些代码,但似乎不工作…

crontab -e

 6 * * * * sync;echo 3 > /proc/sys/vm/drop_caches 

编辑这里是my.cnf ,但是我需要fulltextsearch有时使用oderby date

 key_buffer_size = 256M max_allowed_packet = 8M max_connections=1024 wait_timeout=5 table_open_cache = 512 sort_buffer_size = 2M read_buffer_size = 2M read_rnd_buffer_size = 2M myisam_sort_buffer_size = 256M thread_cache_size = 8 query_cache_limit=2M query_cache_size= 128M thread_concurrency = 8 read_rnd_buffer_size=2M tmp_table_size=128M ft_min_word_len=2 ft_max_word_len=42 

你所引用的代码将导致内核丢弃它所拥有的任何caching数据……这正是它一旦想要使用更多内存就会丢弃的内存。 这对您的系统没有实际影响。

最终,除了运行较less的软件或重新启动进程之外,没有任何办法可以回收额外的内存。 Linux没有任何机制可以将内存压力传递给应用程序,然后将其视为“内存不足”。

释放记忆的一个更好的方法是首先知道什么东西在吃掉你的额外记忆。 要找出它,你可以使用命令'htop',它会告诉你哪个进程正在吃掉多less内存。

并用“free -m”检查内存。

那么你必须重新启动这个过程,或者评估为什么它需要大量的内存。

如果你的服务器的命中率合理高,为什么不考虑增加更多的内存? 这应该解决问题后,调整mysql / httpd参数,以确保它没有再次吃你的记忆。