对于主要是写入的数据库,mongodb内存占满之后写入效率会变得不稳定
这个时候,你需要释放内存(可试用db.runCommand({closeAllDatabases:1}) )实现
下面的c#代码可以用来定时释放内存,使用的时候注意把路径换成你服务器的路径,另外就是修改下释放频率
Technorati 标签: mongodb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 |
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); } } /// <SUMMARY> /// 执行命令 /// </SUMMARY> /// <PARAM name="cmd" /></PARAM> /// <RETURNS></RETURNS> 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(); } } |