Activities of "heshengli"

  • Exception message and full stack trace:
  • Steps to reproduce the issue: [2025-12-18 14:00:02.801 +08:00] [WRN] [Volo.Abp.Caching.DistributedCache] Timeout awaiting response (outbound=1KiB, inbound=0KiB, 5502ms elapsed, timeout is 5000ms), command=HMGET, next: HMGET c:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto,k:vSkysoft:ApplicationConfiguration_77ea1cc56a3e9b7aecee3a15e9cea1f5_zh-Hans, inst: 0, qu: 0, qs: 8, aw: False, bw: SpinningDown, rs: ReadAsync, ws: Idle, in: 87304, in-pipe: 0, out-pipe: 0, last-in: 0, cur-in: 0, sync-ops: 18, async-ops: 4395440, serverEndpoint: 10.166.0.97:6379, conn-sec: 770.75, aoc: 0, mc: 1/1/0, mgr: 10 of 10 available, clientName: 2623c49bb095(SE.Redis-v2.7.27.49176), IOCP: (Busy=0,Free=1000,Min=1,Max=1000), WORKER: (Busy=99,Free=32668,Min=16,Max=32767), POOL: (Threads=99,QueuedItems=30,CompletedItems=89914679,Timers=26), v: 2.7.27.49176 (Please take a look at this article for some common client-side issues that can cause timeouts: https://stackexchange.github.io/StackExchange.Redis/Timeouts) StackExchange.Redis.RedisTimeoutException: Timeout awaiting response (outbound=1KiB, inbound=0KiB, 5502ms elapsed, timeout is 5000ms), command=HMGET, next: HMGET c:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto,k:vSkysoft:ApplicationConfiguration_77ea1cc56a3e9b7aecee3a15e9cea1f5_zh-Hans, inst: 0, qu: 0, qs: 8, aw: False, bw: SpinningDown, rs: ReadAsync, ws: Idle, in: 87304, in-pipe: 0, out-pipe: 0, last-in: 0, cur-in: 0, sync-ops: 18, async-ops: 4395440, serverEndpoint: 10.166.0.97:6379, conn-sec: 770.75, aoc: 0, mc: 1/1/0, mgr: 10 of 10 available, clientName: 2623c49bb095(SE.Redis-v2.7.27.49176), IOCP: (Busy=0,Free=1000,Min=1,Max=1000), WORKER: (Busy=99,Free=32668,Min=16,Max=32767), POOL: (Threads=99,QueuedItems=30,CompletedItems=89914679,Timers=26), v: 2.7.27.49176 (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 Microsoft.Extensions.Caching.StackExchangeRedis.RedisCache.GetAndRefreshAsync(String key, Boolean getData, CancellationToken token) at Microsoft.Extensions.Caching.StackExchangeRedis.RedisCache.GetAsync(String key, CancellationToken token) at Volo.Abp.Caching.DistributedCache2.GetAsync(TCacheKey key, Nullable1 hideErrors, Boolean considerUow, CancellationToken token) [2025-12-18 14:00:02.801 +08:00] [WRN] [Volo.Abp.Caching.DistributedCache] ---------- Exception Data ---------- Redis-Message = HMGET c:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto,k:vSkysoft:ApplicationConfiguration_Anonymous_zh-Hans Redis-Message-Next = HMGET c:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto,k:vSkysoft:ApplicationConfiguration_77ea1cc56a3e9b7aecee3a15e9cea1f5_zh-Hans Redis-OpsSinceLastHeartbeat = 0 Redis-Queue-Awaiting-Write = 0 Redis-Queue-Awaiting-Response = 8 Redis-Active-Writer = False Redis-Backlog-Writer = SpinningDown Redis-Read-State = ReadAsync Redis-Write-State = Idle Redis-Inbound-Bytes = 87304 Redis-Inbound-Pipe-Bytes = 0 Redis-Outbound-Pipe-Bytes = 0 Redis-Last-Result-Bytes = 0 Redis-Inbound-Buffer-Bytes = 0 Redis-Sync-Ops = 18 Redis-Async-Ops = 4395440 Redis-Server-Endpoint = 10.166.0.97:6379 Redis-Server-Connected-Seconds = 770.75 Redis-Abort-On-Connect = 0 Redis-Multiplexer-Connects = 1/1/0 Redis-Manager = 10 of 10 available Redis-Client-Name = 2623c49bb095(SE.Redis-v2.7.27.49176) Redis-ThreadPool-IO-Completion = (Busy=0,Free=1000,Min=1,Max=1000) Redis-ThreadPool-Workers = (Busy=99,Free=32668,Min=16,Max=32767) Redis-ThreadPool-Items = (Threads=99,QueuedItems=30,CompletedItems=89914679,Timers=26) Redis-Busy-Workers = 99 Redis-Version = 2.7.27.49176 redis-command = HMGET c:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto,k:vSkysoft:ApplicationConfiguration_Anonymous_zh-Hans request-sent-status = Sent redis-server = 10.166.0.97:6379

引用Contracts模块,包含大量权限,导致自身程序启动时也加载引用Contracts模块的权限,对自身程序没有作用,还影响性能

    Configure<PermissionManagementOptions>(options =>
    {

options.ISaveStaticPermissionsToDatabase= true; options.IsDynamicPermissionStoreEnabled = false; });

Answer

是否考虑添加OneTime.Run(),初始化全部用户角色权限,在权限多的情况下,Cache.SetManyAsync比较耗时 也可以添加Options开关

Answer

[maliming] said:

var permissions = (await PermissionDefinitionManager.GetPermissionsAsync()) 
                .Where(x => notCacheKeys.Any(k => GetPermissionNameFormCacheKeyOrNull(k) == x.Name)).ToList(); 

改为

var names = notCacheKeys.Select(k => GetPermissionNameFormCacheKeyOrNull(k)).ToArray(); 
 
var permissions = (await PermissionDefinitionManager.GetPermissionsAsync()) 
    .Where(x => names .Any(k => k == x.Name)).ToList(); 

速度从6秒到几秒? 6969ms到92ms

Answer

上面的问题,只解决了部分问题,我的程序是7.2.2 的微服务框架,没有升级到最新版本,但是会把一些高版本的优化,copy到本地重新发布dll替换原有的dll await Cache.SetManyAsync(cacheItems); 大量权限的时候设置缓存还是有2s,每次用户登录,获取Role ,User 权限都会有2s ,一起就是4s左右, 可能还要加OneTime方法,程序启动的时候把全部信息加载到缓存,后期用户登录才可能比较快。现在是第一次登录慢,第二次才快 系统启动热数据还是要加载到缓存

Answer

https://github.com/abpframework/abp/blob/dev/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionStore.cs#L178-L179

var permissions = (await PermissionDefinitionManager.GetPermissionsAsync())
                .Where(x => notCacheKeys.Any(k => GetPermissionNameFormCacheKeyOrNull(k) == x.Name)).ToList();

改为

var names = notCacheKeys.Select(k => GetPermissionNameFormCacheKeyOrNull(k)).ToArray();

var permissions = (await PermissionDefinitionManager.GetPermissionsAsync())
    .Where(x => names .Any(k => k == x.Name)).ToList();
Answer

好像不是这个函数GetPermissionNameFormCacheKeyOrNull的问题

(await PermissionDefinitionManager.GetPermissionsAsync()).Where(x => notCacheKeys.Any(k => GetPermissionNameFormCacheKeyOrNull(k) == x.Name)).ToList()

notCacheKeys.Any(k => GetPermissionNameFormCacheKeyOrNull(k) == x.Name),每次都要全量转字符串匹配再Any, (await PermissionDefinitionManager.GetPermissionsAsync()). Count1 notCacheKeys Count2 O(Count1*Count2)

Answer

很多这样的权限 pn:R,pk:admin,n:C1:PQCManage.TestResultPqcSp.Update C1:PQCManage.TestResultPqcSp.Update 很多这种类型,C1:PQCManage.TestResultPqcSp.Update ,C2:PQCManage.TestResultPqcSp.Update,C3:PQCManage.TestResultPqcSp.Update

Answer

Blazor Server 白屏时间成15s-10s+,但是页面还是白屏明细

Showing 31 to 40 of 88 entries
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.2.0-preview. Updated on February 05, 2026, 13:24
1
ABP Assistant
🔐 You need to be logged in to use the chatbot. Please log in first.