RedisDB ส่งข้อยกเว้นการหมดเวลาเมื่อพยายามเรียกใช้งาน flushdb

ฉันมีปัญหากับ StackExchange.Redis ในกระบวนการของเรา เรามีฐานข้อมูล Redis สองฐานข้อมูล ฐานข้อมูลเหล่านี้ใช้เพื่อจัดเก็บข้อมูลที่คล้ายกันซึ่งผู้ใช้สามารถดำเนินการค้นหาได้ ดังนั้นเราจึงสลับระหว่างข้อมูลเหล่านี้ในการนำเข้า เพื่อให้ผู้ใช้สามารถเข้าถึงข้อมูลได้อย่างต่อเนื่อง ในแต่ละวัน มีการแทรกบันทึกประมาณ 50000000 รายการในฐานข้อมูลหนึ่ง และบันทึกเก่าจะถูกลบออกจากอีกฐานข้อมูลหนึ่ง เพื่อเตรียมสำหรับการนำเข้าในวันถัดไป บันทึกจะถูกนำเข้าเป็นชุดจำนวน 100,000 รายการ ปัญหาที่เรากำลังเผชิญคือหลังจากการนำเข้าข้อมูลเสร็จสิ้น Redis จะส่งข้อยกเว้นขณะพยายามดำเนินการคำสั่ง flushdb

StackExchange.Redis.RedisTimeoutException Timeout awaiting response (outbound=0KiB, inbound=0KiB, 5976ms elapsed, timeout is 5000ms), command=UNKNOWN, next: SELECT, inst: 0, qu: 0, qs: 2, aw: False, rs: ReadAsync, ws: Idle, in: 0, in-pipe: 0, out-pipe: 0, serverEndpoint: 127.0.0.1:6379, mgr: 10 of 10 available, clientName: MX-ENUM-VM, IOCP: (Busy=0,Free=1000,Min=2,Max=1000), WORKER: (Busy=3,Free=32764,Min=2,Max=32767), v: 2.0.601.3402 (Please take a look at this article for some common client-side issues that can cause timeouts: https://stackexchange.github.io/StackExchange.Redis/Timeouts)    at Project.Synchronizer.Service.RedisHelper.FlushDb(Int32 dbIndex)
    at Project.Synchronizer.Service.RedisHelper.SelectAndClearRedisDbForNumberUpload()
    at Project.Synchronizer.Service.RedisHelper.UploadNumbers()
    at Project.Synchronizer.Service.DataUploadService.UploadNumbersToRedis() StackExchange.Redis.RedisTimeoutException: Timeout awaiting response (outbound=0KiB, inbound=0KiB, 5976ms elapsed, timeout is 5000ms), command=UNKNOWN, next: SELECT, inst: 0, qu: 0, qs: 2, aw: False, rs: ReadAsync, ws: Idle, in: 0, in-pipe: 0, out-pipe: 0, serverEndpoint: 127.0.0.1:6379, mgr: 10 of 10 available, clientName: CLIENT-ENUM-VM, IOCP: (Busy=0,Free=1000,Min=2,Max=1000), WORKER: (Busy=3,Free=32764,Min=2,Max=32767), v: 2.0.601.3402 (Please take a look at this article for some common client-side issues that can cause timeouts: https://stackexchange.github.io/StackExchange.Redis/Timeouts)
    at Project.Synchronizer.Service.RedisHelper.FlushDb(Int32 dbIndex)
    at Project.Synchronizer.Service.RedisHelper.SelectAndClearRedisDbForNumberUpload()
    at Project.Synchronizer.Service.RedisHelper.UploadNumbers()
    at Project.Synchronizer.Service.DataUploadService.UploadNumbersToRedis()

วิธีที่ฉันพยายามรันคำสั่งนี้คือ

private async Task FlushDb(int dbIndex)
{
    await getDB(dbIndex).ExecuteAsync("flushdb");
}

ความช่วยเหลือใดๆ จะได้รับการชื่นชมอย่างมาก เนื่องจากฉันติดอยู่กับเรื่องนี้มาระยะหนึ่งแล้ว สำหรับบันทึกนี้ ฉันพยายามหาคำตอบที่นี่ แต่ไม่เข้าใจอะไรเลย https://stackexchange.github.io/StackExchange.Redis/Timeouts.html


person brainpow3r    schedule 15.01.2020    source แหล่งที่มา


คำตอบ (1)


ดูเหมือนว่าฉันสามารถแก้ไขปัญหาได้ แต่ไม่ได้เจาะลึกถึงสาเหตุของปัญหามากนัก เรื่องยาวเรื่องสั้นที่เพิ่มขึ้น syncTimeout ดูเหมือนจะช่วยได้และจะไม่มีข้อยกเว้นอีกต่อไป เธรดนี้มีประโยชน์ในกรณีของฉัน stackexchange.redis พ่นการหมดเวลาแม้หลังจากเพิ่มการหมดเวลาแล้ว ?

person brainpow3r    schedule 15.01.2020