CPU 诊断进程负载高 运行 在 iOS 模拟器上 React Native 应用程序
High CPU load of diagnosticd process while running React Native app on iOS simulator
我已经使用 React Native 进行开发多年,但最近才开始出现以下行为。 运行 iOS 模拟器上的任何 React Native 应用程序(直接来自 Xcode 或通过 react-native run-ios
)之后,诊断过程缓慢地将 CPU 使用率增加到 150%一两分钟。我的笔记本电脑变得无法使用,因为该进程还耗尽了 OS 的所有文件句柄。谷歌搜索仅指向过度日志记录,但要么我没有在正确的位置查找,要么没有发生大量日志记录。
在模拟器中按主页按钮关闭应用程序会立即停止高 cpu 负载。
有人也遇到过这种情况吗?我怎样才能找出造成这种情况的原因?
MacOSCatalina版本10.15.3,Xcode版本11.4,React版本16.9.0,React Native版本0.61.5,模拟器iPhone11(iOS 13.4)
它更像是一种解决方法而不是解决方案,但似乎将模拟器重置为出厂默认值可以临时解决此问题(至少在我的情况下)。
看起来 diagnosticd 正在处理一些可能位于模拟器内存中的文件,因此随着文件的增长,它可能需要越来越多的 cpu?
无论如何尝试进入模拟器菜单:Hardware -> Erase All Content and Settings
然后关闭模拟器并从 XCode 重新启动它,以便在上面复制您的应用程序。
来自 、
的解决方法
kill $(ps -ef | grep Xcode.app | egrep "diagnosticd|homed" | awk '{ print }')
我发现这很有用
您还可以尝试一件事,这是一项非常严厉的措施,风险自负,
先试试这个,
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.diagnosticd.plist
如果您收到有关系统保护 (SIP) 的消息,
您可以尝试关闭 SIP,然后 运行再次执行该命令,
这几乎可以保证 diagnosticd 永远不会再 运行 了……虽然不知道这意味着什么……
在此处详细了解这两件事,
https://makandracards.com/dev/16439-disable-daemons-services-in-mac-os-x
https://www.imore.com/how-turn-system-integrity-protection-macos
*免责声明,这可能不是干扰 SIP 的最安全解决方案,但我是在我的旧 2015 i5 macbook 上这样做的,因为我感到绝望,并且实际上无法在带有诊断错误的模拟器上做任何工作。
到目前为止一切似乎都很愉快...
我想我找到了解决办法。 Xcode 记录了很多行,其中包含:xcode nw_connection_get_connected_socket Client called nw_connection_get_connected_socket on unconnected nw_connection
。这是在几个月前 Xcode 的一些更新之后开始的。禁用日志记录已阻止诊断进程耗尽所有 OS 资源。我遵循了这些说明:
基本上归结为向方案 (运行) 添加一个值为 disable
的环境变量 OS_ACTIVITY_MODE
。
日志记录的真正原因是什么我仍然不知道。它看起来像是来自 React Native 的某种轮询。
终于找到解决办法了!我一直想知道为什么 AppDelegate.m 中的默认 url 不起作用。所以我开始专注于此。事实证明,我巨大的广告拦截主机文件是造成这种情况的原因。恢复原始 /etc/hosts 文件解决了这两个问题!
我已经使用 React Native 进行开发多年,但最近才开始出现以下行为。 运行 iOS 模拟器上的任何 React Native 应用程序(直接来自 Xcode 或通过 react-native run-ios
)之后,诊断过程缓慢地将 CPU 使用率增加到 150%一两分钟。我的笔记本电脑变得无法使用,因为该进程还耗尽了 OS 的所有文件句柄。谷歌搜索仅指向过度日志记录,但要么我没有在正确的位置查找,要么没有发生大量日志记录。
在模拟器中按主页按钮关闭应用程序会立即停止高 cpu 负载。
有人也遇到过这种情况吗?我怎样才能找出造成这种情况的原因?
MacOSCatalina版本10.15.3,Xcode版本11.4,React版本16.9.0,React Native版本0.61.5,模拟器iPhone11(iOS 13.4)
它更像是一种解决方法而不是解决方案,但似乎将模拟器重置为出厂默认值可以临时解决此问题(至少在我的情况下)。
看起来 diagnosticd 正在处理一些可能位于模拟器内存中的文件,因此随着文件的增长,它可能需要越来越多的 cpu?
无论如何尝试进入模拟器菜单:Hardware -> Erase All Content and Settings
然后关闭模拟器并从 XCode 重新启动它,以便在上面复制您的应用程序。
来自
kill $(ps -ef | grep Xcode.app | egrep "diagnosticd|homed" | awk '{ print }')
我发现这很有用
您还可以尝试一件事,这是一项非常严厉的措施,风险自负,
先试试这个,
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.diagnosticd.plist
如果您收到有关系统保护 (SIP) 的消息,
您可以尝试关闭 SIP,然后 运行再次执行该命令,
这几乎可以保证 diagnosticd 永远不会再 运行 了……虽然不知道这意味着什么……
在此处详细了解这两件事,
https://makandracards.com/dev/16439-disable-daemons-services-in-mac-os-x
https://www.imore.com/how-turn-system-integrity-protection-macos
*免责声明,这可能不是干扰 SIP 的最安全解决方案,但我是在我的旧 2015 i5 macbook 上这样做的,因为我感到绝望,并且实际上无法在带有诊断错误的模拟器上做任何工作。
到目前为止一切似乎都很愉快...
我想我找到了解决办法。 Xcode 记录了很多行,其中包含:xcode nw_connection_get_connected_socket Client called nw_connection_get_connected_socket on unconnected nw_connection
。这是在几个月前 Xcode 的一些更新之后开始的。禁用日志记录已阻止诊断进程耗尽所有 OS 资源。我遵循了这些说明:
基本上归结为向方案 (运行) 添加一个值为 disable
的环境变量 OS_ACTIVITY_MODE
。
日志记录的真正原因是什么我仍然不知道。它看起来像是来自 React Native 的某种轮询。
终于找到解决办法了!我一直想知道为什么 AppDelegate.m 中的默认 url 不起作用。所以我开始专注于此。事实证明,我巨大的广告拦截主机文件是造成这种情况的原因。恢复原始 /etc/hosts 文件解决了这两个问题!