一、启动mongdb时报错

根据你的 mongodb.conf 配置文件里的内容进行排查,如

mongodb 性能问题分析 mongodb常见问题_mongodb

(1)Unrecognized option: storage try ‘mongod --help’ for more information

mongodb 性能问题分析 mongodb常见问题_nosql_02

解决办法:在storage:下面的两行最前面输入两个空格。

(2)error:child process failed, exited with error number 1

解决办法:创建 /var/run/mongodb/mongod.pid文件

(3)error:child process failed, exited with error number 48

创建 /var/log/mongodb/mongod.log

(4)error:child process failed, exited with error number 100

创建:/var/lib/mongo

二、重启服务器时 mongodb/mongod.pid 不见了

每次开机后启动 mongodb 时报 error:child process failed, exited with error number 1 错误,查看发现 /var/run/目录下的 mongodb/mongod.pid文件 不见了或者被自行删除了。

解决办法是:自行写个开机创建 mongodb/mongod.pid文件的脚本。

1.创建脚本为 mgopid.sh

vim mgopid.sh

#输入如下信息
#! /bin/bash
d=`mkdir -p /var/run/mongodb`
e=`touch /var/run/mongodb/mongod.pid`

2.加入到 /etc/rc.local 中

vim /etc/rc.local

#输入下面信息
#creat a mongod.pid
/root/mgopid.sh

chmod +x /etc/rc.local #添加执行权限

关于 /etc/rc.local

说明:
1. 此文件是存放开机自启动程序命令的文件
2. /etc/rc.local 是 /etc/rc.d/rc.local 文件的软链接。
3. 针对CentOS 7 : 默认是没有执行权限,需要加上执行权限 chmod +x /etc/rc.local

        在Linux系统中 /etc/init.d是个目录,这个目录里面用于放置shell脚本,注意是脚本,这些脚本是启动脚本,用于Linux中服务的启动、停止、重启,比如各种Linux中的服务都会有启动脚本放在这里,像是ssh服务的文件sshd就在这里面。

        而 /etc/rc.d/rc.local 是一个文件,这个文件用于用户自定义开机启动程序,也就是说用户可以把需要开机启动的命令、运行可执行脚本的命令写入这个文件,这样就可以在系统启动时自动执行这个命令,比如把一个shell脚本的完整路径写入这个文件,那这个shell脚本就会在开机后自动执行。

三、启动报错ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=14)

1.esystemctl start mongod.servic 启动后,查看状态时报错:

mongodb 性能问题分析 mongodb常见问题_数据库_03

2.缘由是文件读取权限不足,执行如下操做:

 (1)查看mongodb用户名

cat /etc/passwd

mongodb 性能问题分析 mongodb常见问题_mongodb 性能问题分析_04

(2)确保以下目录文件权限为mongodb,如果不是则添加权限:

chown mongodb:mongodb /tmp/mongodb-27017.sock

mongod.conf 配置文件下所有目录 如 
storage:
  dbPath: xxxx 路劲下的 目录也添加权限即可

如
chown -R mongodb:mongodb xxx

mongodb 性能问题分析 mongodb常见问题_mongodb 性能问题分析_05

 (3)重新启动即可。

esystemctl restart mongod.servic
esystemctl status mongod.servic

四、mongod: error while loading shared libraries: libcrypto.so.10: cannot open shared object file: No such file or directory 

使用配置文件启动 mongodb时还有直接执行 mongod时报如下错误,意思是说找不到共享库文件 libcrypto.so.10:

mongodb 性能问题分析 mongodb常见问题_mongodb 性能问题分析_06

mongodb 性能问题分析 mongodb常见问题_mongodb_07

前提:我安装mongodb前已安装下面依赖:

yum -y install libcurl openssl

解决办法:

1.首先通过命令ldd /usr/local/mongodb/bin/mongod 来查看./mongod还需要哪些依赖:

mongodb 性能问题分析 mongodb常见问题_数据库_08

2.通过yum whatprovides libcrypto.so.10命令查看哪个包下有共享库文件

我这边显示没有匹配的搜索结果。你们如果查到有结果的话则 yum 安装相应的包

mongodb 性能问题分析 mongodb常见问题_mongodb_09

3.MongoDB 4.0及以上版本需要依赖openssl10相关资源,必须先在Linux中安装openssl10
        需要下载一个MongoDB的rpm包,因为MongoDB 安装时需要依赖openssl10进行安全访问,类似http和https之间,做安全连接

[root@Euler ~]# wget https://vault.centos.org/centos/8/AppStream/x86_64/os/Packages/compat-openssl10-1.0.2o-3.el8.x86_64.rpm

[root@Euler ~]# rpm -ivh compat-openssl10-1.0.2o-3.el8.x86_64.rpm

4.再次查看依赖已经都有了

[root@Euler ~]# ldd /usr/local/mongodb/bin/mongod

mongodb 性能问题分析 mongodb常见问题_Server_10

5.再次启动mongodb 则可成功

[root@Euler ~]# mongod --config /usr/local/mongodb/etc/mongod.conf
about to fork child process, waiting until server is ready for connections.
forked process: 7739
child process started successfully, parent exiting

五、Unrecognized option: storage.journal  try 'mongod --help' for more information

使用配置文件启动 mongodb时报如下错误:

mongodb 性能问题分析 mongodb常见问题_mongodb 性能问题分析_11

意思是我们配置的config文件出了问题。
说明:MongoDB采用的是YAML格式,所以我们只需要稍微改改就好。

在storage:下面的两行最前面输入两个空格。
我刚开始这两行都是没有空格的,实际应该在下面两行最前面输入两个空格。

比如字母 d 对齐上面的 字母 o:

mongodb 性能问题分析 mongodb常见问题_nosql_12

重启启动mongod即可成功!

六、Windows 中 mongo 无论是用连接工具还是命令行客户端连接,都不能正常连接

可以从下面看到,我前面还能正常访问,后面突然又不行了,用 Robo 3T 工具连接也不成功:

C:\Program Files\MongoDB\Server\4.2\bin>mongo.exe
MongoDB shell version v4.2.2
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("55af8b5e-a2a6-4ebe-8893-fcc8931e7e82") }
MongoDB server version: 4.2.2
> show tables
Warning: unable to run listCollections, attempting to approximate collection names by parsing connectionStatus
> show collections
Warning: unable to run listCollections, attempting to approximate collection names by parsing connectionStatus
> exit
bye

C:\Program Files\MongoDB\Server\4.2\bin>mongo.exe
MongoDB shell version v4.2.2
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
2023-02-14T15:49:48.608+0800 E  QUERY    [js] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketException: Error connecting to 127.0.0.1:27017 :: caused by :: ͨ��ÿ���׽��ֵ�ַ(Э��/�����ַ/�˿�)ֻ����ʹ��һ�Ρ� :
connect@src/mongo/shell/mongo.js:341:17
@(connect):2:6
2023-02-14T15:49:48.611+0800 F  -        [main] exception: connect failed
2023-02-14T15:49:48.612+0800 E  -        [main] exiting with code 1

解决办法:

# 查看连接数
C:\Program Files\MongoDB\Server\4.2\bin>netsh int ipv4 show dynamicportrange tcp

协议 tcp 动态端口范围
---------------------------------
启动端口        : 49152
端口数          : 16384

# 设置最大连接
C:\Program Files\MongoDB\Server\4.2\bin>netsh int ipv4 set dynamicport tcp start=2000 num=63535
确定。