eryajf / go-ldap-admin

🌉 基于Go+Vue实现的openLDAP后台管理项目
http://ldapdoc.eryajf.net
Apache License 2.0
1.58k stars 265 forks source link

🙋 问题交流。。。 | [Question] 企业微信大批量人员同步问题 #256

Closed KevinLiu59 closed 6 months ago

KevinLiu59 commented 1 year ago

Question Report

你使用了哪个版本? | Which version did you use?

docker-compose

预期行为 | Expected behavior

正常同步所有人员

实际行为 | Actual behavior

点击同步时,界面卡住了,像是在等待接口相应,通过手动查找数据库,是有部分数据进来。但到了一个数量之后就像是卡住了,也不增加数据了,前端也没有任何响应了。 image

image

原因分析(如果可以) | Cause analysis (if possible)

不太确定,查看docker日志没有获得太多有效信息,个人猜测是否接口响应超时了,或者是没有对大批量同步做优化呢?

问题重现步骤 | Steps to reproduce the problem

eryajf commented 1 year ago

您好 @KevinLiu59👋,我已收到您的反馈,我将安排时间考虑您提交的信息并进行回复。-- 这条信息是由自动回复的机器人发出的。

Hello @KevinLiu59. I have received your feedback, and I will arrange time to consider the information you submitted and reply. -- This message is sent by an automatic reply robot.

eryajf commented 1 year ago

这的确是此前不曾遇到过的问题。

目前企微这块儿,是先获取部门,之后再获取所有部门下的用户信息。

关于你的这个问题,需要逐步排查一下。

  1. 排查是否企微接口获取用户数据不完整,这个可通过这个工具跑一下看看数据是否完整: https://github.com/eryajf/third-tools/blob/main/wecom/main.go
  2. 如果第一步排查没有问题,那么有可能是后续步骤的问题,这块儿你可以再次手动点击同步,然后浏览器打开检查,看看最后的接口返回,是不是超时了,还是其他错误。目前接口没有做并发,都是串行的,所以是有可能超时的。
KevinLiu59 commented 1 year ago

感谢回复,针对你提出的两个排查方法,我做了实现: 1.通过断点调试,看到数据字段是完整的,与企业微信人数匹配。 3c06fbe9fc002cd00e112867ea5adc5 048d27b286eaf29979bfa15cbc330a4 2.通过后续尝试,发现点击同步按钮后,页面还是卡顿,但是会提示一个504错误,错误提示完成后会继续卡顿,必须手动刷新才能恢复正常。 image 3.后续我用Fiddler抓包看接口状况,返回信息如下: image

通过昨天不断点点点,现在成功同步了10221人,但是剩余的人员一直同步不进来了。。。。 image

eryajf commented 1 year ago

你通过docker-compose拉起之后,是直接 IP:PORT 进行访问的吗,如果是这样,那可以docker exec 到前端的容器里,然后编辑Nginx的配置,调大一下超时的配置项。

vi /etc/nginx/conf.d/default.conf

添加配置:

    proxy_connect_timeout   600;
    proxy_send_timeout      600;
    proxy_read_timeout      600;

然后reload服务。

之后同样再次手动点击同步,打开检查,看看接口返回什么错误。

KevinLiu59 commented 1 year ago

我把服务整体重装了一遍,然后按照提示添加了超时配置,现在查看到全部人员已经同步过来了。 image 这次同步没有响应504错误代码了,但是还是一直卡着页面,我就把页面关掉了,过了一会可以看到人数一直在增加,估计是后台正在处理吧。

KevinLiu59 commented 1 year ago

再提一个遇到的问题:是不是现在企业微信更新了接口后,已经不支持获取的手机号或邮箱等字段了? image 我现在同步出来的手机号都是错误的,不太知道是怎么生成的。 image

有解决方案不?

eryajf commented 1 year ago

现在拿到的应该是随机生成的11位数字。

去年企微调整了这个接口: https://developer.work.weixin.qq.com/document/path/90201

使用的依赖的这个组件目前也没有支持:https://github.com/wenerme/go-wecom/issues/3

如果想要拿到这个信息,需要做一些代码开发。

eryajf commented 1 year ago

另外你这边方便的话,可以帮忙在这里提交一下信息吗,能够使这个小项目增加一点人气: https://github.com/eryajf/go-ldap-admin/issues/18

KevinLiu59 commented 1 year ago

好的,待后续调试完成上线后,我会提交使用登记,感谢!

wenerme commented 1 year ago

现在拿到的应该是随机生成的11位数字。

去年企微调整了这个接口: https://developer.work.weixin.qq.com/document/path/90201

使用的依赖的这个组件目前也没有支持:wenerme/go-wecom#3

如果想要拿到这个信息,需要做一些代码开发。

这个只能单个用户逐个操作,如果记得不错,contact 应用可以拿到

eryajf commented 1 year ago

contact 应用

请问下,这个应用指的是什么呢

wenerme commented 1 year ago

contact 应用

请问下,这个应用指的是什么呢

通讯录同步应用,权限更高