当多个开发人员使用我的 API 时,多个并发请求将被发送到 Mongoose。当并发量很高时,连接就会“死亡”并拒绝满足任何新请求,无论我等待多长时间(几个小时!)。
我只是想说,正常使用时一切正常。大量使用会导致连接崩溃。
我的 MongooseModule 初始化:
MongooseModule.forRoot(DatabasesService.MONGO_FULL_URL, {
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: false,
autoEncryption: {
keyVaultNamespace: DatabasesService.keyVaultNamespace,
kmsProviders: DatabasesService.kmsProviders,
extraOptions: {
mongocryptdSpawnArgs: ['--pidfilepath', '/tmp/mongocryptd.pid']
}
} as any
})
Run Code Online (Sandbox Code Playgroud)
导入功能的模块:
@Module({
imports: [MongooseModule.forFeature([{ name: 'modelName', schema: ModelNameSchema }])],
providers: [ModelNameService],
controllers: [...],
exports: [...]
})
Run Code Online (Sandbox Code Playgroud)
服务:
@Injectable()
export class ModelNameService {
constructor(
@InjectModel('modelName') private modelName: Model<IModelName>
) {}
async findAll(): Promise<IModelName[]> {
const result: IModelName[] = await this.modelName.find().exec();
if (!result) throw new BadRequestException(`No result was found.`);
return …Run Code Online (Sandbox Code Playgroud) 我在网上搜索过但无法在任何地方找到答案。我正在尝试使用 NestJS 框架运行 API Web 服务。
我正在运行 docker-compose,它会启动 API 服务器、MongoDB 实例和 mongocryptd 实例,以允许在我的应用程序上进行客户端字段级加密。
我能够连接到 MongoDB 实例,但无法连接到 mongocryptd 实例。
version: "3.7"
services:
api:
build:
context: .
dockerfile: Dockerfile
labels:
env: dev
args:
APP: appname
APP_PORT: 3000
ports:
- "3000:3000"
command: ["sh", "-c", "npm run start:app:dev"]
volumes:
- .:/app
mongodb:
build:
context: .
dockerfile: docker/MongoEP-Dockerfile
labels:
env: dev
args:
MONGO_PACKAGE: mongodb-enterprise
MONGO_REPO: repo.mongodb.com
image: mongo-enterprise:4.2.5
command: ["--auth"]
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: usr
MONGO_INITDB_ROOT_PASSWORD: pwd
ports:
- "27017:27017"
volumes: ["/private/var/services/mongodb:/data/db"]
mongocryptd: …Run Code Online (Sandbox Code Playgroud)