首页 文章 精选 留言 我的

精选列表

搜索[失败归因],共10000篇文章
优秀的个人博客,低调大师

App 在部分安卓手机上安装失败怎么排查?7 类原因与解决方法

同一个 APK,在测试机上安装正常,到了部分用户手机却只提示“应用未安装”“安装包与系统不兼容”,甚至没有明确报错。这类问题不能只看前端提示。最有效的排查方法,是先用 ADB 获取 Package Manager 返回的错误码,再从系统版本、CPU 架构、签名、版本号、安装包完整性和设备策略六个方向定位。

优秀的个人博客,低调大师

Google 就 Android 反垄断 41 亿欧元罚单上诉失败,八年拉锯战终结

7 月 2 日,欧盟最高法院 European Court of Justice 驳回了 Google 对 41 亿欧元(约合 46.7 亿美元)反垄断罚单的最终上诉。这场自 2018 年起持续八年的法律拉锯,画上了句号。 案件追溯到 2018 年。欧盟委员会当时裁定 Google 利用 Android 的市场支配地位,通过三类行为排挤竞争对手:要求手机厂商预装 Google Search 和 Chrome 浏览器才能获得 Play Store 授权;向厂商和运营商支付费用换取独家预装 Google 搜索;阻止厂商销售运行 Android 分支版本(Android fork)的设备。初始罚金为 43.4 亿欧元。 2022 年,欧盟普通法院维持了违规认定,但将罚金小幅降至 41 亿欧元。Google 随即上诉至 ECJ,理由是「欧盟未能证明我们的商业协议损害了竞争」。7 月 2 日,ECJ 驳回上诉,罚单正式生效。 Google 发言人在回应中表示:"这一裁决未能认识到我们为保持 Android 开放、可互操作和免费所做的巨大投入,"但补充说自 2018 年起已修改了相关协议。 这笔罚款是 Google 在欧盟面临的三项反垄断处罚之一,合计超过 80 亿欧元。若算上其他案件,Google 向欧盟缴纳的罚款总额已接近 110 亿欧元。与此并行,欧盟仍在通过《数字市场法案》(DMA)和《数字服务法案》(DSA)对大型科技平台施加新的结构性约束。 Hacker News 上关于该新闻的讨论部分焦点出人意料地落在了一个措辞细节上——CNBC 标题中用了「alleged anti-competitive practices」(涉嫌反竞争行为),多位评论者质疑:"上诉都输了,法院都定了,还有什么好'涉嫌'的?"由此展开了一场关于新闻措辞惯例和资本媒体偏向的辩论。 更实质的讨论围绕 Android 生态现状展开。一位用户将话题引向近期 F-Droid 与 Google ADV 之争:"Google 说 Android 提供更多选择?那为什么 F-Droid 正在受到威胁?"keepandroidopen.org 的公开信被链接到了讨论中,多位用户认为 DMA 虽意在打破围墙花园,但实际效果是推动了 Google 效仿 Apple 收紧侧载管控。 也有评论将矛头指向更普遍的预装软件问题:"为什么每台三星和 LG 手机都塞满了删不掉的垃圾应用?欧盟罚了 Google,但垃圾软件生态一个没少。" 但无论立场如何,ECJ 的裁决意味着 Android 反垄断案的程序部分已彻底终结。接下来要看的是 DMA 框架下的执行力度——罚款是一回事,改变厂商和运营商的实际商业行为是另一回事。 参考来源: CNBC: Google loses fight over record $4.7 billion EU antitrust fine AP News: Top EU court dismisses Google appeal of $4.5 billion antitrust fine France24: EU top court rejects Google's appeal against record €4.1 billion antitrust fine Hacker News 讨论

优秀的个人博客,低调大师

警惕日志采集失败的 6 大经典雷区:从本地管理反模式到 LoongCollector 标准实践

作者:余韬(讯飞) 背景 观察系统的运行状态,排查疑难问题,日志作为一种历史悠久的可观测手段,始终扮演着不可替代的角色。 科学的本地日志管理策略,不仅能在本地保留更完整历史记录,最小化性能开销,并且能为日志采集和后续分析提供便利。然而在实际运维中,我们时常遇到反例,这类管理缺陷带来的采集现在对于主流采集工具(LoongCollector(原 iLogtail)、Filebeat、Fluentbit、Vector、OpenTelemetry Collector)均无法完美解决,唯有从源头解决才是最佳实践。 我们将沉淀自阿里云云原生可观测团队的经验总结成本文,希望给大家一些启发,一起让日志更好地为大家服务。 反模式 1. 使用 copy truncate 模式轮转日志,因两个动作非原子并创建新文件,可能导致日志丢失或重复采集 使用 logrotate 的 copy truncate 模式轮转日志的原理是先复制原日志文件,然后截断原文件。这种方式存在以下问题: a. copy 动作产生的新文件可能被当作新的内容重复采集。因为文件系统的 inode 变化,采集器可能无法正确识别这是轮转后的旧文件。 b. copy 和 truncate 之间产生的日志可能丢失。在这两个操作之间有一个时间窗口,此时写入的内容既不在复制的文件中,又会被截断操作清除。 c. truncate 操作可能导致文件大小变小和头部内容变化,缩小文件或改变文件头部签名会导致采集器误判为新文件,造成重复采集。 因此,copy truncate 模式可能导致日志重复采集、内容丢失或不一致的问题。 推荐使用 create 模式进行日志轮转,即创建新文件并重命名旧文件,这样可以保证文件的完整性和连续性。如果无法避免,请在配置采集配置时使用精确的路径名。 2. 使用 NAS、OSS 作为日志存储,因元信息不一致和 ls 性能低,可能导致日志采集截断或停止 网络附加存储(NAS)通常采用基于最终一致性的一致性模型,这在分布式系统中是常见的设计。在实时采集场景下,这可能导致以下问题: a. 文件元信息与实际内容不一致。由于最终一致性,文件大小等元数据可能先于实际内容更新。 b. 读取到文件空洞。当元信息显示文件已增大,但实际内容尚未同步时,读取操作可能返回 \0 字符(文件空洞)。 c. 数据延迟。写入操作的结果可能不会立即对读取操作可见,导致采集延迟。 d. 数据丢失。由于 NAS 不支持 inotify 并且 list 性能低下,因此文件可能无法被发现,导致数据丢失。 这些问题可能导致采集到的数据与最终内容不一致。 建议使用 EBS,自建机器使用本地磁盘,以保证日志读写的效率和一致性。如无法避免,请在消费端做好异常日志的兼容逻辑。 3. 多进程写日志,因数据互相覆盖,可能导致采集到的数据不完整 多进程并发写入同一日志文件是一种常见但不推荐的做法,它可能导致以下问题: a. 文件内容交叉。多个进程的写入可能相互交叉,导致日志条目混乱。 b. 采集不完整。当文件发生写入事件时,采集器开始采集数据。但如果采集过程中其他进程继续写入,这些新写入的内容可能被跳过。 c. 文件锁争用。多进程写入可能导致文件锁争用,影响写入性能和可靠性。 这种模式可能导致采集到的数据不完整且与文件的最终内容不一致。 推荐多进程写入各自不同文件,这样可以保证日志的完整性和顺序性。如无法避免,请在消费端做好异常日志的兼容逻辑。 4. 创建文件空洞释放日志文件空间,因改变文件签名和内容,可能导致日志重复采集或数据丢失 通过在文件头部创建空洞来释放日志文件空间是一种存在风险的做法,原因如下: a. 文件签名改变。LoongCollector(原 iLogtail)为避免 inode 复用漏采数据,额外使用文件头部的内容作为文件唯一性的判断依据。创建空洞可能改变这个签名,导致采集器误判为新文件。 b. 数据完整性问题。创建空洞实际上是用 \0 字符替换了原有内容,可能导致重要的历史日志丢失。 c. 文件系统碎片化。频繁创建空洞可能导致文件系统碎片化,影响读写性能。 这种做法可能导致数据重复采集和历史数据丢失。 推荐使用标准的日志轮转机制来管理日志文件大小,如使用 logrotate 工具定期轮转日志文件,这样可以保证日志的完整性和可追溯性。如无法避免,建议使用 fallocate 而非 truncate 或 dd,并在消费端做好异常日志的兼容逻辑。 5. 频繁覆盖写文件,因文件内容频繁变化,可能导致采集数据不完整或不一致 频繁覆盖写整个日志文件是一种不安全的日志管理方式,可能导致以下问题: a. 文件元信息与内容不一致。在覆盖过程中,文件大小等元信息可能先于实际内容更新,导致采集器读取到不完整或不一致的内容。 b. 数据丢失风险。如果在日志采集过程中发生覆盖写入,可能导致采集读取到的数据内容错乱或丢失。 c. 历史数据难以保留。频繁覆盖会导致无法保留历史日志,不利于问题追溯和分析。 这种做法可能导致采集到的内容与文件最终内容不一致,或完全丢失文件内容。 建议采用追加写入(append)的方式记录日志,并配合日志轮转机制管理文件大小。如无法避免,请在消费端做好异常日志的兼容逻辑。 6. 使用 vim 编辑文件保存,因创建新文件替换原文件,可能导致日志重复采集 使用 vim 编辑并保存文件时,vim 的保存机制可能导致以下问题: a. inode 变化。vim 创建新文件替换原文件时,新文件的 inode 与原文件不同,可能导致采集器误判为新文件。 b. 文件签名改变。新文件的头部内容可能与原文件不同,改变了文件签名,导致采集器无法正确识别。 c. 文件内容丢失。当 vim 替换文件时,写入程序可能没有切换到新保存日志文件,可能导致日志内容丢失。 这种编辑方式可能导致日志重复采集或数据丢失。 如仅需查看日志,建议使用 less、grep 等只读工具。如无法避免,请在消费端做好去重和异常处理的逻辑。 总结 日志是系统运行的"黑匣子",其管理质量直接影响故障排查效率与系统可靠性。通过规避本文提到的反模式,遵循使用日志库轮转、本地盘写入、单线程追加等最佳实践,可显著降低日志采集风险,提升可观测性能。

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册