Mongodb 定时释放内存

对于主要是写入的数据库,mongodb内存占满之后写入效率会变得不稳定

这个时候,你需要释放内存(可试用db.runCommand({closeAllDatabases:1}) )实现

下面的c#代码可以用来定时释放内存,使用的时候注意把路径换成你服务器的路径,另外就是修改下释放频率

Technorati 标签: mongodb

class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                new Thread(delegate()
                {
                    Console.WriteLine("开始释放");
                    Cmd(@"echo 正在启动MongoDB
d:
cd D:\mongodb\bin
mongo
use admin
db.runCommand({closeAllDatabases:1})
", "bye");
                    Console.WriteLine("释放完成");
                }).Start();

                // 三小时
                Thread.Sleep(3 * 3600 * 1000);
            }
        }

        /// 
        /// 执行命令
        /// 
        /// 
        /// 
        static void Cmd(string cmd, string end)
        {
            Process process = new Process
            {
                StartInfo =
                {
                    FileName = "cmd.exe",
                    UseShellExecute = false,
                    RedirectStandardInput = true,
                    RedirectStandardOutput = true,
                    RedirectStandardError = true,
                    CreateNoWindow = true
                }
            };
            process.Start();
            process.StandardInput.AutoFlush = true;
            process.StandardInput.WriteLine(cmd);
            process.StandardInput.WriteLine("exit");
            var outPut = "";

            while (!(outPut = process.StandardOutput.ReadLine()).Contains(end))
            {
                Console.WriteLine(outPut);
            }

            Console.WriteLine(outPut);

            if (process.HasExited == false)
                //Process is still running.
                //Test to see if the process is hung up.
                if (process.Responding)
                    //Process was responding; close the main window.
                    process.CloseMainWindow();
                else
                    //Process was not responding; force the process to close.
                    process.Kill();

            process.Close();
        }
    }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏字根中文校对软件

JcJc错别字纠错检查API说明

JcJc错别字纠错检查API说明 JcJc错别字纠错检查1.0发布在即,先发布最新版本的API说明文档: 未来版本的改动,以Github为准, 项目地址: ht...

3467
来自专栏蘑菇先生的技术笔记

Net作业调度(五)—quartz.net动态添加job设计

2626
来自专栏java 成神之路

MTU 和 MSS 区别

1275
来自专栏Coding01

深入浅出 Laravel Echo (3)

看完 public channel 的流程,我们该来说说怎么跑通 private channel 了。

913
来自专栏大内老A

谈谈基于OAuth 2.0的第三方认证 [中篇]

虽然我们在《上篇》分别讨论了4种预定义的Authorization Grant类型以及它们各自的适用场景的获取Access Token的方式,我想很多之前没有接...

1926
来自专栏依乐祝

Ocelot简易教程(七)之配置文件数据库存储插件源码解析

上篇文章给大家分享了如何集成我写的一个Ocelot扩展插件把Ocelot的配置存储到数据库中。并没有对实现原理进行相应的阐述。今天抽空把实现的原理给大家说道说道...

740
来自专栏大内老A

WCF技术剖析之二:再谈IIS与ASP.NET管道

在2007年9月份,我曾经写了三篇详细介绍IIS架构和ASP.NET运行时管道的文章,深入介绍了IIS 5.x与IIS 6.0HTTP请求的监听与分发机制,以及...

17210
来自专栏菩提树下的杨过

flash player10.1 + FMS4中的p2p功能

在fms4以前Adobe只允许在stratus中才能使用p2p功能。令人高兴的是,在最新发布的fms4中,p2p功能已经集成进来了,这将给实时视频类的应用带来更...

18910
来自专栏PingCAP的专栏

TiKV 是如何存取数据的(上)

本文会详细的介绍 TiKV 是如何处理读写请求的,通过该文档,同学们会知道 TiKV 是如何将一个写请求包含的数据更改存储到系统,并且能读出对应的数据的。

952
来自专栏张善友的专栏

WCF服务在高负载下可能会变慢

KB2538826 解释了WCF服务在突发的请求下会发生的问题:当您的 WCF 服务接收请求的突发时,默认.Net I/O 完成端口 (IOCP) 线程池可能不...

1915

扫码关注云+社区