linux服务器进程打开文件过多导致服务异常
linux服务器进程打开文件过多导致服务异常
背景 我的logstash是多管道部署结果发现有大量日志丢失的情况查看logstash日志出现了以下报错 [2023-11-07T09:43:38,492][ERROR][logstash.javapipeline ][log] Pipeline worker error, the pipeline will be stopped {:pipeline_id=>“log”, :error=>"/var/lib/logstash/queue/log/checkpoint.head.tmp (Too many open files)", :exception=>Java::JavaIo::FileNotFoundException, :backtrace=>[“java.base/java.io.FileOutputStream.open0(Native Method)”, “java.base/java.io.FileOutputStream.open(FileOutputStream.java:298)”, “java.base/java.io.FileOutputStream.(FileOutputStream.java:237)”, “java.base/java.io.FileOutputStream.(FileOutputStream.java:187)”, “org.logstash.ackedqueue.io.FileCheckpointIO.write(FileCheckpointIO.java:105)”, “org.logstash.ackedqueue.Page.headPageCheckpoint(Page.java:202)”, 这个问题是 Logstash Pipeline 在处理数据时报错,原因是打开文件过多导致"Too many open files" 解决方法 1. 检查操作系统的文件打开数量限制,使用ulimit -n查看。如果太低,可以提高这个限制 打开 /etc/profile 增加ulimit 值 1vim /etc/profile 2## 增加,保存并退出 3ulimit -n 10240 4# 重载配置 5source /etc/profile 2. 适当增大Logstash的heap size,如-Xms和-Xmx设置为2g。 1vim /etc/logstash/jvm.option 2# 修改参数 3-Xms 2g 4-Xmx 2g 5# 重启logstash服务
使用 ElasticSearch Curator 7天定期删除日志
使用 ElasticSearch Curator 7天定期删除日志
使用 ElasticSearch Curator 7天定期删除日志 背景 Curator 是 Elastic 官方发布的一个管理 Elasticsearch 索引的工具,可以完成许多索引生命周期的管理工作。 我使用的 elasticseraech 8.0 以上的版本,所有我直接安装最新版的curator,服务器是centos 7 的 二进制安装 下载 1wget https://packages.elastic.co/curator/5/centos/7/Packages/elasticsearch-curator-5.8.4-1.x86_64.rpm 安装 curator 1rpm -ivh elasticsearch-curator-5.8.4-1.x86_64.rpm 2curator --version 进入安装文件,创建文件 1cd /opt/elasticsearch-curator 2mkdir log 3cd log 4touch run.log 创建config.yml文件在log目录下 config.yml样例如下: 配置说明参考官网说明:config.yml 1# Rmember, leave a key empty if there is no value. None will be a string, 2# not a Python "NoneType" 3client: 4 hosts: 5 - 192.168.10.17 # elasticsearch IP 地址 6 port: 9200 7 url_prefix: 8 use_ssl: False 9 certificate: 10 client_cert: 11 client_key: 12 ssl_no_validate: False 13 http_auth: elastic:password # elastic 密码,没有就不用写 14 timeout: 30 15 master_only: False 16 17logging: 18 loglevel: INFO 19 logfile: /opt/elasticsearch-curator/log/run.
sonarqube docker安装和配置
sonarqube docker安装和配置
背景 我是在ubuntu服务器安装docker服务,我已经安装好了docker和docker-compose服务,这里我就不写这些服务的安装过程,直接开始安装sonarqube服务 安装 sonarqube服务器 1.执行脚本文件 config.sh 1#!/bin/bash 2sysctl -w vm.max_map_count=262144 3sysctl -w fs.file-max=65536 4ulimit -n 65536 5ulimit -u 4096 6# # 永久改变 7# echo "vm.max_map_count=262144" >> /etc/sysctl.conf 8# sysctl -p 1sh config.sh 2.执行docker-compose文件 1version: '3' 2services: 3 postgres: 4 image: postgres:15 5 container_name: postgres 6 ports: 7 - 5432:5432 8 volumes: 9 - ./sonar/postgres/postgresql:/var/lib/postgresql 10 - ./sonar/postgres/data:/var/lib/postgresql/data 11 environment: 12 TZ: Asia/Shanghai 13 POSTGRES_USER: user #数据库用户 14 POSTGRES_PASSWORD: password #数据库密码 15 POSTGRES_DB: sonar 16 17 sonarqube: 18 depends_on: 19 - postgres 20 image: sonarqube:9.
SSH 通过 443 端口连接 GitHub
SSH 通过 443 端口连接 GitHub
背景 GitHub 提供了两种协议供用户使用 Git 连接—— SSH 和 HTTPS。理论上我可以随意选择两者之一连接到我在 GitHub 上的代码仓库,无论是将云端的仓库 clone 到本地,还是将本地的修改 push 到云端。然而,出于一些奇奇怪怪的原因,我所在的办公网络环境禁止了 22 端口,而 22 端口正是 GitHub 提供 SSH 访问的端口号。尽管可以换用 HTTPS 协议,但无论如何将我电脑上的所有代码仓库的上游都从 git@github.com:... 修改称 https://github.com/... 仍然是一个繁重的体力活。 解决 为了让Git也能通过上述端口用 SSH 访问 GitHub,我们为上述 SSH 连接方式设置一个别名。首先找到SSH的配置文件,它的路径一般是~/.ssh/config,如果这个文件不存在的话也可以创建一个。然后,在其中增加以下内容: 1Host github.com 2 HostName ssh.github.com 3 User git 4 Port 443 其中,Host 是别名,HostName 是实际的域名地址,Port 是端口号。因为我希望当我在用 SSH 连接 github.com 时,实际访问的是 ssh.github.com,所以 Host 和 HostName 分别设置成这两个域名(注意不要颠倒顺序)。 测试连接 1ssh -vT git@github.com
iOS 17 「待机显示」适配普通 iPhone(非 Pro/Max),屏幕在充电时常亮
iOS 17 「待机显示」适配普通 iPhone(非 Pro/Max),屏幕在充电时常亮
让 iOS 17 「待机显示」适配普通 iPhone(非 Pro/Max),屏幕在充电时常亮 背景 让 iPhone 14/15 Pro/Max 以下机型也可以在屏幕激活待机显示功能(充电且横置)时保持常亮,以显示小组件内容。 2023 年新发布的 iOS 17 有一个新功能:待机显示 StandBy,它能在 iPhone 横向放置且充电时,全屏显示小组件,比如时钟、日历等等,但所有的非 Pro/Max 机型,由于没有全天候显示屏(显示屏能够以低至 1 Hz 的刷新率运行),所以并不能持续使用待机显示,会在几秒钟之后熄灭屏幕,当感受到震动(轻轻拍一下桌子),或有新通知时,再次点亮。 原理 如果 iPhone 接入充电器充电 > 等待 19 秒 > 开关一次低电量模式 > 再运行一次脚本 如果没有充电 > 关闭低电量模式 > 停止脚本 之后,使用自动化功能,当 iPhone 接入充电器时,自动运行这个脚本就行了。 教程 获取链接 自带19秒等待间隔,如果遇到熄屏可以修改为15秒。 注意 小组件自动轮换失效 烧屏:请务必小心,长期使用可能会导致的屏幕问题 充电前需要手动熄屏,否则会因为不断的开关低电量模式而无法进入待机显示
GNU/Linux 一键更换系统软件源脚本
GNU/Linux 一键更换系统软件源脚本
背景 有很多小伙伴,在接受公司老项目后,想要更新服务器源时,发现镜像源失效了,手动添加也很不方便,我这里提供了一个脚本供大家使用,轻松切换镜像源。 支持系统:  Debian 8.0 ~ 12  Ubuntu 14.04 ~ 23  Kali Linux 2.0 ~ 2023  Red Hat Enterprise Linux 7.0 ~ 9  Fedora 30 ~ 38  CentOS 7.0 ~ 8.5 / Stream 8 ~ 9  Rocky Linux 8 ~ 9  AlmaLinux 8 ~ 9  OpenCloudOS 8.6 / 9.0  openEuler 21.03 ~ 23  openSUSE Leep 15 / Tumbleweed  Arch Linux all 执行命令 国内使用 1bash <(curl -sSL https://www.jobcher.com/ChangeMirrors.sh) 教育网使用 1bash <(curl -sSL https://www.
解决Elasticsearch索引只读(read-only)
解决Elasticsearch索引只读(read-only)
背景 这两天有开发向我反馈说elasticsearch有报错,嘿,我定睛一看,这不是进入只读状态了,看来是存储达到额度,我马上加个新的数据节点,平衡一下存储压力 报错信息: 1Elasticsearch Error {type:cluster_block_exception,reason:”blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];} 新建服务器,安装elasticsearch 为了和之前的服务器一样,我简单写一下我elasticsearch版本和服务器系统版本 软件 版本 centos 7.9 elasticsearch 6.7.2 JDK 1.8.61 内存 32G 安装和配置elasticsearch 使用rpm 安装 1wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.7.2.rpm 1rpm --install elasticsearch-6.7.2.rpm 配置参数,进入/etc/elasticsearch目录 修改配置vim elasticsearch.yml 1# ======================== Elasticsearch Configuration ========================= 2 3cluster.name: cluster-prod-es # 集群名称 4 5node.name: node-x # 节点名称 6 7path.data: /var/lib/elasticsearch # 数据存储 8 9path.logs: /var/log/elasticsearch # 日志存储 10 11network.host: 192.168.0.170 # 主机IP地址 12 13http.port: 9200 # 端口号 14 15discovery.
【福利】埃隆·马斯克传 [沃尔特·艾萨克森] 在线下载
【福利】埃隆·马斯克传 [沃尔特·艾萨克森] 在线下载
介绍 著名传记作家艾萨克森以近距离的观察视角,揭开了如今全球引人注目、富有争议性的创新企业家的神秘面纱:他善于突破常规,引领全球进入电动汽车时代、私人太空探索时代和人工智能时代,还将推特收入囊中。 埃隆·马斯克小时候在南非生活,那时他经常遭受校园欺凌,但同父亲给他造成的情感创伤相比,这些伤痛都微不足道。他的童年浸透了人性,这将他塑造为一个坚强而又脆弱的男孩,他对风险的容忍度极高,渴望营造出富有戏剧性的生活,让人类文明成为星际文明是他的宏大目标。 2008年,SpaceX的火箭在前三次发射过程中接连爆炸,特斯拉也即将破产,这是他生命中地狱般的至暗时期。在飓风来临时,他是最兴奋的人之一。动荡的环境和剧烈的冲突对他有着莫大的吸引力,有时他甚至渴望这些东西,无论是在工作中,还是在他努力维持却未能持久的恋爱关系中。每当面临艰巨的挑战,紧张感常常让他夜不能寐,甚至呕吐不止,但这些都是他赖以为生的养分。 2022年年初,也就是在SpaceX成功发射了31颗卫星、特斯拉卖出了近100万辆汽车、埃隆成为地球上最富有的人一年后,对于自己一再挑起戏剧性冲突的背后动机,他略带感伤地谈起了他的反思。 他说:“我需要改变我的思维模式,不能一直处于危机战备状态,我这种状态已经持续了大概14年,或者说我人生的大部分时间。”这更像是一个自怨自艾的评价,而不是在表达新年新气象的决心。他一边做出了这些反思和保证,一边还在秘密买入推特的股票。 两年来,艾萨克森形影不离地跟访马斯克,参加他大大小小的会议,与他一起走访工厂,深度采访了他本人,以及他的家人、朋友、同事、前妻和对手。艾萨克森揭开了马斯克内幕故事的面纱,其中有荡气回肠的胜利,也有跌宕起伏的乱局,令人拍案称奇。这些故事回答了这样一个问题:那个在马斯克心底驱使着他的恶魔,是不是也是推动创新与进步所必需的呢? 下载链接 埃隆·马斯克传 [沃尔特·艾萨克森].pdf 埃隆·马斯克传 [沃尔特·艾萨克森].epub
【破解】小鹏P5和小鹏G9开启adb和网络adb
【破解】小鹏P5和小鹏G9开启adb和网络adb
LET’S HACK NOW! 本文章可以帮助当前正式版本的小鹏P5和小鹏G9开启adb和网络adb 重要提示 如果你对第三方软件的需求高于OTA需求,请关闭OTA功能,P5和G9的下一个版本大概率或已经启用了更高级的加密方式,无法获取解锁码,需要等待其他方式破解 开启adb步骤 首先确认您的爱车是小鹏P5(OTA3.5.0及之前)或小鹏G9(OTA4.3.1及之前)或小鹏G6(未测试)或小鹏P7(OTA2.10及之前)或小鹏G3(版本不确定,最新版不行) 将您的笔记本电脑(已安装adb组件)或安卓手机(已安装甲壳虫adb软件)和您的车机连接到同一无线局域网中(此处可使用另一台手机打开热点),以下使用笔记本电脑举例 打开车机的拨号界面,输入*#9925*111#* 此时车机会显示一个页面,其中包含一个二维码 使用微信扫描您的车机的二维码,并将内容保存备用 在任意输入框中输入内容https://hackxpeng.bgcpdd.eu.org/xpeng?m=hackxpeng&id=,然后将您获取到的二维码内容复制到最后面,注意此处不要有任何的空格 使用浏览器打开您输入框中的所有内容(网址拼接,如:https://hackxpeng.bgcpdd.eu.org/xpeng?m=hackxpeng&id=XPENGD55xxxxxxxxxxxxxx) 浏览器返回一个解锁码(如:*#03*12345678*#) 将该解锁码输入车机的拨号界面,此时解锁码会自动消失,如果没有消失请手动删除所有内容 使用拨号界面输入*#9387*141#* 打开调试和网络调试(一般是前两个选项) 笔记本电脑使用win+r,输入cmd回车,输入adb connect 车机页面中的ip:5050(如adb connect 172.20.10.2:5050) cmd显示连接成功 下载你需要安装的apk 使用adb install安装软件(如:adb install C:\abc\a.apk) 安装成功 adb还有更多好玩有趣的玩法等你发现 笔记本电脑安装adb套件 打开https://developer.android.google.cn/studio/releases/platform-tools?hl=zh-cn 下载windows版本 并解压 将所有文件放入c盘windows目录下的system32和syswow64 注意两个都要放 致小鹏汽车:以下是关闭获取解锁码api的步骤 将P7 P5的地图更新到高德地图最新版本(包括红绿灯倒计时,最新版高精地图,组队功能,普通道路沉浸导航,语音包等) 将P7 P5的QQ音乐更新到最新版本 承诺定期公布OTA进度(最低界限为每月公布) 将P5 p版sr下放到e版车型(显示车辆运动轨迹) 优化P7 P5 G3/i自动泊车 优化NGP并将速度上限设置为130 将P7 P5的夜晚/白天切换逻辑修改为根据光线传感器,而非日出日落时间 上线P5的智慧场景或私人定制2.0 重新评估P7 P5适配新版UI的可行性 重新评估P7更换8155车机的可行性 全部完成后使用小鹏汽车官方Github账号在本仓库发送issue 文章转载于网络,侵权即删 原文连接
Kubernetes — kubecost 分析 Kubernetes 成本
Kubernetes — kubecost 分析 Kubernetes 成本
简介 企业在上云之后,云计算基础设施支出不断创造新高,但 IT 团队却难以找到成本失控的源头,跟每一个业务沟通,所需要的资源都是必须的,降本增效无从谈起。 引入FinOps 的目标是在云上创造一种财务问责制度,每个业务团队需要根据 FinOps 团队的数据做出更加合理的配置、规划,从而在财务成本、业务稳定之间找到一种平衡。FinOps 并不是一次性、短暂的任务,而是在规划实施之后依旧需要进行持续管理,这要求企业必须设定明确的、持续的角色和责任,以保持对成本长期控制。 概念 建立对云成本的共识:企业中各个相关角色应该意识到云成本的重要性,并将成本管理纳入到决策过程中。通过提高成本意识,可以更好地控制和优化云资源的使用。 明确云成本管理的责任和角色:确定负责 FinOps 团队成员,建立相应责任制度。这样确保有专门人员负责云成本的监控、分析和优化,从而提高整体的财务管理效果。 提供培训和教育资源:培训企业成员了解成本管理的基本概念、工具和技术。这有助于增强团队的能力,使他们能够更好地理解和应对云成本挑战。 促进不同团队之间的合作:财务团队、开发团队和运维团队应该紧密合作,共同制定和实施成本管理策略。通过协作,可以更好地理解业务需求、优化资源配置,并确保成本管理策略与业务目标相一致。 利用自动化技术提高效率和准确性:通过采用自动化工具收集、分析和报告云成本数据。自动化还可以帮助实现实时监控和警报,以及自动化资源管理,从而提高成本管理的效率和准确性。 使用 kubecost 分析 Kubernetes 成本 接下来我们展开今天的具体内容,如何使用 kubecost 分析 Kubernetes 成本。 kubecost 是目前较优秀的开源 Kubernetes 成本分析工具,它提供了丰富的功能和仪表板,帮助用户更好地理解和控制其容器化工作负载的成本。 kubecost 目前支持 阿里云、AWS 等云厂商对接,它能够提供集群中命名空间、应用等各类资源成本分配,用户还可以基于这些信息在 Kubecost 中设置预算和警报,帮助运维和财务管理人员进一步实现成本管理。 安装 Kubecost 安装 Kubecost 建议使用 Helm 进行安装,使用以下命令: 1helm repo add kubecost https://kubecost.github.io/cost-analyzer/ 2helm repo update 3helm upgrade --install kubecost kubecost/cost-analyzer --namespace kubecost --create-namespace 几分钟后,检查以确保 Kubecost 已启动并运行: 1kubectl get pods -n kubecost 2# Connect to the Kubecost dashboard UI 3kubectl port-forward -n kubecost svc/kubecost-cost-analyzer 9090:9090 现在可以打开浏览器并指向 http://127.
3D Gaussian Splatting:3D模型渲染
3D Gaussian Splatting:3D模型渲染
简介 只需要一组照片或者一个视频,就能快速地生成一个3D模型。 它使了用一种叫做“3D高斯函数”的数学工具来表示这个3D模型,并找到了一种更快的算法来渲染(即生成)3D模型。 介绍 想象一下,你有一堆照片或视频,你想从一个全新的角度看这些场景。3D Gaussian Splatting 就是一个能让你做到这一点的高级工具。它用一种特别快和高质量的方式来“重建”这些场景,让你能够从任何角度观看它们,就像你实际站在那里一样。 这个工具的“大脑”使用了一种叫做3D高斯的数学模型,这个模型能够非常精确地描述场景的每一个细节。更酷的是,这个工具还能实时地显示这些新角度的场景,这意味着你不必等待很长时间就能看到结果。 简而言之,这是一个能让你以全新、快速和高质量的方式探索照片和视频场景的工具。 使用 硬件要求 具有计算能力 7.0+ 的 CUDA 就绪 GPU 24 GB VRAM(用于训练论文评估质量) 软件要求 Conda(推荐使用,以便于设置) 用于 PyTorch 扩展的 C++ 编译器(我们使用 Visual Studio 2019 for Windows) 用于 PyTorch 扩展的 CUDA SDK 11,在 Visual Studio 之后安装(我们使用 11.8,11.6 存在已知问题) C++编译器和CUDA SDK必须兼容 设置 1SET DISTUTILS_USE_SDK=1 # Windows only 2conda env create --file environment.yml 3conda activate gaussian_splatting 请注意,此过程假设您安装了 CUDA SDK 11,而不是 12。有关修改,请参阅下文。 1conda config --add pkgs_dirs <Drive>/<pkg_path> 2conda env create --file environment.
Linux 系统收包流程以及内核参数优化
Linux 系统收包流程以及内核参数优化
简介 高并发的系统架构中,任何细微调整,稍有不注意便会引起连锁反应,只有系统地了解整个网络栈,在处理疑难杂症或者系统优化工作中,才能做到手中有粮心中不慌。在本节,我们概览一个 Linux 系统收包的流程,以便了解高并发系统所面临的性能瓶颈问题以及相关的优化策略。 收包过程 网卡 eth0 收到数据包。 网卡通过 DMA 将数据包拷贝到内存的环形缓冲区(Ring Buffer,在网卡中有 RX Ring 和 TX Ring 两种缓冲)。 数据从网卡拷贝到内存后, 网卡产生 IRQ(Interupt ReQuest,硬件中断)告知内核有新的数据包达到。 内核收到中断后, 调用相应中断处理函数,开始唤醒 ksoftirqd 内核线程处理软中断。 内核进行软中断处理,调用 NAPI poll 接口来获取内存环形缓冲区(ring buffer)的数据包,送至更上层处理。 内核中网络协议栈:L2 处理。 内核中网络协议栈:L3 处理。 内核中网络协议栈:L4 处理。 网络协议栈处理数据后,并将其发送到对应应用的 socket 接收缓冲区。 高并发瓶颈 用户进程调用系统调用陷入内核态的开销。 CPU 响应包的硬中断 CPU 开销 ksoftirqd 内核线程的软中断上下文开销。 RX/TX Ring 优化 处理一个数据包会有各类的中断、softirq 等处理,因为分配给 Ring Buffer 的空间是有限的,当收到的数据包速率大于单个 CPU 处理速度的时,Ring Buffer 可能被占满并导致新数据包被自动丢弃。一个 CPU 去处理 Ring Buffer 数据会很低效,这个时候就产生 RSS、RPS 等多核并发机制来提升内核网络包的处理能力。 但是注意,开启多核并发特性,会挤压业务代码的执行时间,如果业务属于 CPU 密集型,会导致业务性能下降。是否开启多核处理,需要根据业务场景考虑,根据笔者的经验来看,例如此类负载均衡服务器、网关、集群核心转发节点等网络I/O 密集型场景可以尝试优化 RSS、RPS 等配置。