-
想知道如何在鲲鹏平台上快速上手应用开发吗?鲲鹏DevKit告诉你答案!本期直播将聚焦鲲鹏DevKit,它集成了开发、编译、调试、调优、测试等软件开发的各个环节,帮助开发者完成基于鲲鹏服务器的一站式应用开发,提升应用开发效率,提升应用性能。直播链接:cid:link_0Q:鲲鹏DevKit 应用迁移工具支持哪些系统平台迁移?A:目前主要支持CentOS迁移到麒麟Q:鲲鹏DevKit有哪些行业应用案例?A:医疗、金融、运营商、基础科研、制造、电力、气象、交通、安平、互联网、政府、大企业Q:如何评估使用鲲鹏 DevKit 开发的应用的性能提升效果?A:评估应用性能,可以从以下几个方便入手:1,选取相关的基准测试,测量响应时间、吞吐量等指标;2,使用devkit性能采集工具,可以采集应用的性能指标,分析性能的瓶颈和改进空间;3,评估资源的利用情况,包括CPU、内存、磁盘和网络等,使用合理的分析方法,如TMA、roofline等。Q:对于新手开发者来说,鲲鹏 DevKit 的学习曲线是怎样的? 7. 它是否提供了丰富的文档和教程资源来帮助开发者快速上手?A:鲲鹏社区具有全套的DevKit学习流程和学习课程,可以根据课程顺序进行学习。地址为:https://www.hikunpeng.com/learn/courses?activeTab=1547169694099677185 文档可以参考鲲鹏社区的DevKit用户手册和最佳实践,地址为https://www.hikunpeng.com/document/detail/zh/kunpengdevps/overview/kunpengdevps.htmlQ:目标VM和Java程序在线分析的精度是如何确定的? 如何便捷存档数据便于后续相同业务对比分析?A:精度提供采集频率1ms-1000ms动态配置,可以灵活选择。在线分析和采样分析的数据支持导入导出,以方便后续相同业务对比分析。Q:鲲鹏DevKit系统性能分析工具包括哪些功能?A:性能分析工具目前包括:场景化ai调优分析、调优助手、全景分析、HPC分析、微架构分析、访存分析、进线程分析、热点函数、I/O分析、锁与等待分析、Roofline分析、资源调度分析等功能。Q:鲲鹏DevKit 系统性能分析工具中,HPC集群检查能检查哪些内容?A:通过对用户指定的MPI集群进行硬件、软件配置检查,并给出集群中各节点软硬件配置的一致度报告。检查对象支持硬件领域的CPU、GPU、互联、内存、网卡、磁盘,软件领域中的OS、Kernel、环境变量、MPI、OpenMP、HPC常用依赖库等维度。对于不符合鲲鹏平台最佳实践的配置,工具会给出优化建议。Q:鲲鹏DevKit 源码迁移支持哪些开发语言?A:ASM/C/C++/Fortran/Python/Java/Scala/GoQ:鲲鹏DevKit 系统迁移中支持哪些操作系统、中间件、数据库?A:系统:CentOS->麒麟V10中间件:Nginx,Redis,Tomcat,金蝶、东方通数据库:达梦、人大金仓Q:在线分析中如何保证系统额外开销小?采样分析的采样频率如何确定?A:在线分析支持采集频率1ms-1000ms动态配置,以更精确地捕获方法的耗时,这使得对于耗时较小的方法调用也能进行有效统计,从而提高了分析的精度。Q:与其他类似的开发工具相比,鲲鹏 DevKit 的优势在哪里?A:鲲鹏DevKit更加贴合鲲鹏平台底层,由于鲲鹏底层针对软件做了大量优化,DevKit能够更好地利用这些优化措施,完成开发调优。Q:鲲鹏DevKit Java性能分析工具主要用途是什么?A:Java性能分析工具是针对基于鲲鹏的服务器上运行的Java程序的性能分析和优化工具,能图形化显示Java程序的堆、线程、锁、垃圾回收等信息,收集热点函数、定位程序瓶颈点,帮助用户采取针对性优化。Q:鲲鹏DevKit 系统性能分析工具中,全景分析有什么作用?A:通过采集系统软硬件配置信息,以及系统CPU、内存、存储IO、网络IO资源的运行情况,获得对应的使用率、饱和度、错误次数等指标,以此识别系统性能瓶颈。针对部分系统指标项,根据当前已有的基准值和优化经验提供优化建议。Q:鲲鹏DevKit 亲和分析工具对平台有要求吗?A:有的,亲和分析支持鲲鹏平台Q:鲲鹏DevKit 支持哪些工具?A:目前DevKit支持VSCODE和网页端模式,囊括的开发工具包括迁移、开发、调试、亲和、调优、诊断等工具。Q:鲲鹏DevKit 是否有demo环境可以体验?A:可以通过www.hikunpeng.cm官方网站中,开发者选项里的学习选项,体验在线实验功能,提供云实验环境供开发者体验。Q:目标VM和Java程序的在线分析,如何针对不同的VM进行适配?如何提高在线分析对大型Java程序的适用性?A:java性能分析工具支持对jdk8-jdk17程序进行分析,支持的jdk包括Oracle JDK,毕昇Jdk。Q:AITunner调优是自动的吗A:是的。AITuner使用自研高性能AI调优方案,通过用户自主选择测试用例,对数据库和大数据场景进行自动优化,自动调优后给予最优参数配置,提供复杂场景下参数配置的优化建议。Q:全面调优包含哪些层面的优化,是如何协调不同层面的? 软硬件融合释放最佳性能,硬件和软件之间是如何交互协作的?A:全面调优包括:硬件、os和基础设施、应用层、数据和存储、网络等。一般协调不通层面的性能问题,可以通过分析性能瓶颈、逐层优化改进性能问题,确保每层改进都能带来整体的性能提升,监控系统性能,根据实时数据调整优化,确保各层面优化相互配合。常见的软硬件交互协作包括:硬件加速器、优化指令集、缓存优化、资源调度、反馈优化机制等。Q:是否有成功的应用迁移或开发案例供参考?A:可以参考hikunpeng网站的最佳实践章节:https://www.hikunpeng.com/document/detail/zh/kunpengdevps/handon_tutorials/bestpractice/kunpengDevKitPractice_0062.htmlQ:请问python+c+java可以同时进行性能调优吗?A:明前提供python+c的热点函数分析能力,以及单独的java和c的分析能力,可以灵活使用。Q:进程和线程之间的优先级关系应该如何分析?如何解决死锁和锁竞争问题?A:进线程的优先级需要考虑系统的调度策略、进程和线程的负载以及他们之间的依赖关系。避免死锁可以考虑:避免资源独占;确认线程申请资源时不持有其他资源;设计可抢占系统;减少循环等待链。编码时可以减少锁的粒度,使用读写锁或乐观锁提高锁的效率,设置超时机制等方式。Q:有具体的案例或者视频演示一下吗?关于性能调优方面的A:可以参考hikunpeng网站的最佳实践章节:https://www.hikunpeng.com/document/detail/zh/kunpengdevps/handon_tutorials/bestpractice/kunpengDevKitPractice_0062.htmlQ:鲲鹏DevKit 系统性能分析工具中,Agent管理有什么作用?A:Agent是负责实际运行采集插件的组件。通过将采集组件分离,可以实现分布式采集能力,方便用户部署多机采集能力。Q:调优助手给出的调优建议是基于什么模型或算法?专项分析是针对哪些特殊问题或场景开展的?A:调优助手是根据测试反馈和经验得到的优化建议。专项分析目前是对pc领域提供了独特的采集分析的方法和思路。Q:在调优过程中,如何平衡性能提升与资源消耗(如内存、CPU、网络带宽等)之间的关系?鲲鹏 DevKit 有哪些优化原则和方法?A:性能提升的目标就是提高资源利用的能力,为了平衡资源和性能就是在调优过程中关注资源的利用效率的指标。在资源消耗一定的情况下,需要提高资源利用的效率,将浪费的资源用上,将用上的资源用好。DevKit有很多分析和优化的方法,如cpu分析的TMA分析法、numa内存分析、roofline分析等。Q:那鲲鹏的性能调优可以直接在鲲鹏平台上进行性能调优吗?A:性能调优工具提供强大的采集能力,并基于采集结果和历史经验给出相关的调优建议;并且在一些场景提供了AI自动调优能力。Q:缺乏迁移经验的开发人员,应该关注哪些分析报告?A:如果是Java系统进行迁移,可以关注系统迁移的迁移结果报告;如果是其他语言,可以考虑源码迁移的迁移结果报告。Q:那对于鲲鹏平台来说,迁移什么语言主导的软件更好迁移呢?A:目前迁移Java系统更加方便迁移,因为我们针对Java系统场景做了系统迁移功能,能够端到端的实现鲲鹏迁移。Q:扫描软件安装包时,如何识别so依赖库兼容信息的准确性?有没有误判的可能?A:目前是存在误判的可能,用户可以通过手动拆包验证,或者直接执行验证去判定是否兼容,如果不兼容可以关注报告中是否存在兼容so的下载链接进行替换。Q:对于大型复杂项目的代码扫描,鲲鹏DevKit应用迁移的资源占用情况如何?是否会影响其他系统进程?A:这个取决于具体用户项目,更具用户反馈,暂时没有出现影响其他系统进程的场景。Q:扫描过程中如何确保对所有依赖库文件的扫描无遗漏?有没有特定的检查算法或者机制?A:我们针对依赖库的白名单是有定期更新机制的,但如果要确保所有依赖文件均可正常运行,需要用户执行手动测试验证。Q:请问在企业级应用中,中间件通常与其他系统组件紧密集成,自动迁移部署中间件时,如何确保与其他组件的兼容性和协同工作能力?A:自动迁移部署中间件时,我们主要确保了中间件能够正常启动,如果要确保应用和中间件的协同工作正常,需要参考迁移指导建议,针对配置文件等进行手动修改,修改完成后即可确保正确。Q:自动分析系统成分的准确性如何保证?是否存在误判或遗漏某些关键系统成分的可能性?如果出现这种情况,如何进行人工复核和修正?A:目前确实存在误报等情况,对此我们提供了系统成分修正功能,可以在扫描完成后增删改查Q:系统迁移就是说整个迁移吗还是?A:系统迁移指的是将整个Java应用程序系统进行搬迁,包括应用、中间件、数据库等。Q:迁移的目标系统,只能是openeuler,还是支持其他的linux?毕昇的make,支持c++哪些版本、java哪些版本?A:迁移的目标系统包括openEuler系的系统,如麒麟统信等常用国产OS,以及一些常用OS,详细信息参见:https://www.hikunpeng.com/document/detail/zh/kunpengdevps/userguide/usermanual/DevKit_Porting_0011.html 编译器支持版本也可参见:https://www.hikunpeng.com/document/detail/zh/kunpengdevps/userguide/usermanual/DevKit_Porting_0011.htmlQ:如何确保编译过程中的依赖项兼容鲲鹏架构?A:可以尝试使用应用迁移中的源码迁移,扫描makefile,查看是否存在不兼容编译选项。Q:如何确保在鲲鹏 DevKit 上迁移的软件与原软件在功能上完全一致?是否存在某些功能在迁移后无法正常使用的风险?A:鲲鹏DevKit迁移后的软件与原软件保持一致,除了需要使用DevKit进行迁移,还依赖用户执行手动测试,针对已有应用的测试用例进行执行,根据测试结果确认迁移后是否一致。 软件某些功能无法使用只会出现在使用了与硬件架构有关的功能中,这在实际编码中非常少,比如intel的内联函数,而这部分鲲鹏已经有替换的兼容库。Q:是否提供了专门的性能分析工具来帮助开发者识别瓶颈?A:是的。DevKit内置性能分析工具,可以帮助开发者识别性能瓶颈,达成快速调优的目标。Q:DevKit支持一站式应用开发吗?如何做好性能分析?A:鲲鹏 DevKit 确实支持一站式应用开发,从代码编写到性能调优都可以在一个环境中完成。它提供了丰富的性能分析工具,帮助开发者在开发过程中进行全面的性能分析和优化。Q:如何确保现有的x86架构上的应用程序能够顺利迁移到鲲鹏平台上?A:针对不同的语言和场景,我们有不同的解决方案,如果是Java系统,我们有系统迁移工具,确保X86的应用程序能够顺利迁移到鲲鹏平台,其他语言,我们可以使用源码迁移进行迁移工作。完成迁移后我们需要进行人工功能验证,保证应用功能正确性。Q:鲲鹏只能运行在鲲鹏CPU硬件上吗?如果我用麒麟的笔记本,比如L420,可以装IDE进行开发吗?A:鲲鹏指鲲鹏服务器,相关插件都是部署在鲲鹏服务器上。用户可以通过笔记本按照IDE远程连接服务器进行开发。Q:鲲鹏只能运行在鲲鹏CPU硬件上吗?如果我用麒麟的笔记本,比如L420,可以装IDE进行开发吗?A:鲲鹏指鲲鹏服务器,相关插件都是部署在鲲鹏服务器上。用户可以通过笔记本按照IDE远程连接服务器进行开发。Q:应用迁移过去有啥好处呢? 网络协议不一定兼容A:迁移到鲲鹏上能够使用鲲鹏软硬件结合的优势,进一步提高应用的运行速率。Q:在遇到问题时,是否有官方支持渠道或社区可以帮助解决?A:可以在www.hikungpeng.com官网社区反馈。想要了解更多鲲鹏 DevKit 相关知识,欢迎观看DTSE Tech Talk 系列技术直播
-
有人知道sh巡检文件纹样安装怎样安装吗
-
比如收集到这些json类型的消息,如何将这些数据传到华为云服务器,或者有没有更好的方法可以让DTU模组将数据实时传到服务器,IOT这里将数据进行操作吗:
-
安装完dotnet后执行dotnet --info报错, 执行dotnet --list 又没问题 ,大概意思libicuil8n..so.50这个文件有问题,但又找不到正常文件cannot get symbol ucol_setMaxVariable_50 from libicui18n error:/lib64/libicuil8n..so.50: undefined symbol:ucol_setMaxVariable_50 Aborted
-
sdk版本为3.21.11,实现的功能是依次下载obs内多个文件,并打包生成压缩包放在硬盘路径内首先在本地pc测试无问题,均能正常依次下载文件,但在华为云服务器(华北北京4的服务器,带宽5M)上运行,有很高频率压缩包会生成失败使用文档提供的 带获取进度的下载 示例来测试,观察日志发现,压缩包生成失败的原因,是在某几个文件上会有很高的频率下载到一定进度后就无响应(进度百分比的日志输出到不固定的某个进度后就停止了),直到超过设置的ConnectionTimeout和SocketTimeout时间,才抛出了SocketTimeoutException: Read timed out的异常(未捕获到ObsException异常),进而造成压缩包生成失败问题1:是否有办法继续定位 文件下载到一定进度后就无响应 问题原因的办法?问题2:如果考虑 捕获到SocketTimeoutException: Read timed out后进行重试机制,这边就希望能将设置的ConnectionTimeout和SocketTimeout时间缩小以减少重试的等待时间,但如果因为下载的文件过大,导致文件没有在这两个时间内下载完成,是否也会直接下载失败?注:试过直接在服务器下的浏览器访问这几个文件的url地址,均能正常获取到,所以我猜不是网络原因
-
文章目录 一、Libevent概述 1.两个重要的结构体 2.libevent常用接口 二、libevent IO事件 三、libevent信号事件 四、libevent高并发服务器 参考 一、Libevent概述 Libevent 是一个用C语言编写的、轻量级的开源高性能网络库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,不如 ACE 那么臃肿庞大;源代码相当精炼、易读;跨平台,支持 Windows、 Linux、 *BSD 和 Mac Os;支持多种 I/O 多路复用技术, epoll、 poll、 dev/poll、 select 和 kqueue 等;支持 I/O,定时器和信号等事件;注册事件优先级。 Libevent 已经被广泛的应用,作为底层的网络库;比如 memcached、 Vomit、 Nylon、 Netchat等等。Libevent之于C语言网络编程,类似于Nettty之于Java Web编程。学习Netty的小伙伴,不防看下Libevent的实现,会加深对Netty框架的理解 安装方式(1): $ apt-get download libevent-dev $ dpkg -x libevent-dev_2.1.12-stable-1build3_amd64.deb libevent 1 2 安装方式(): libevent的download urls github assert 1.两个重要的结构体 struct event-base 事件集合 struct event_base用于创建和管理事件循环,而struct event用于表示具体的事件,并与事件循环相关联。 struct event_base 代表一个事件处理的基础框架,它负责管理事件循环(event loop),接收事件并将它们分派给相应的事件处理器。 struct event_base 实例典型地代表了一个事件驱动程序的运行环境,它可以被视为事件循环的主体。 struct event_base 可以支持多种事件驱动的后端(如select、poll、epoll等),因此在创建 struct event_base 实例时,可以指定使用的后端。 struct event 一个事件(可以是一个fd,也可以是一个signal,也可以是一个定时器事件) struct event 包含了事件的相关信息,比如事件类型(读、写、定时器等)、事件触发时需要执行的回调函数等。 当文件描述符上发生关注的事件时,struct event 将通知 struct event_base,然后 struct event_base 将事件分派给相应的事件处理器执行。 两者关系: struct event结构体中有一个指向struct event_base的指针,用于指示该事件所属的事件循环。这样,当事件发生时,事件循环可以根据事件的描述找到相应的回调函数并执行。 2.libevent常用接口 event_init 用于初始化 libevent 的全局状态。在使用 libevent 前调用此函数是必要的步骤,它会进行一些全局状态的初始化工作。 event_base new event_base_new 用于创建一个新的事件基础框架(struct event_base 实例)。 返回的 event_base 实例将用于管理事件循环和事件处理。 event_set event_set 用于设置事件的相关属性,比如事件关联的文件描述符、事件类型、以及事件触发时执行的回调函数。 这个函数被废弃了,不建议使用,建议使用 event_assign 替代。 event_assign event_assign 用于将事件与指定的 event_base 关联起来,并设置事件的属性。 这个函数类似于 event_set,但是更加灵活,可以避免一些使用上的混淆。 event_add event_add 用于向事件循环中添加一个事件,让它开始监视文件描述符上的事件。 添加事件后,事件循环将开始监视文件描述符,当有事件发生时,会触发事件的回调函数。 evconnlistener_new_bing evconnlistener_new_bind 是用于创建一个监听器(listener)的函数,用于监听指定地址和端口上的连接请求。 当有连接请求到达时,监听器将接受连接并创建一个新的套接字来处理该连接。 二、libevent IO事件 fifo-read.c #include <event.h> #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <sys/stat.h> #include <unistd.h> void fifo_read(evutil_socket_t fd, short events, void *arg) { char buf[32] = {0}; int rt = read(fd, buf, sizeof(buf)); if (-1 == rt) { perror("read"); exit(-1); } printf("read <%s>\n", buf); return; } int main() { int ret = mkfifo("fifo.tmp", 0700); if (-1 == ret) { perror("mkfifo"); exit(-1); } int fd = open("fifo", O_RDONLY); if (-1 == fd) { perror("open"); exit(-1); } struct event ev; event_init(); event_set(&ev, fd, EV_READ, fifo_read, NULL); event_add(&ev, NULL); event_dispatch(); return 0; } fifo-write.c #include <fcntl.h> #include <stdio.h> #include <string.h> #include <unistd.h> int main() { int fd = open("fifo.tmp", O_WRONLY); if (-1 == fd) { perror("open"); exit(-1); } char buf[32] = {0}; while (1) { scanf("%s", buf); int ret = write(fd, buf, sizeof(buf)); if (-1 == ret) { perror("write"); exit(-1); } if (!strcmp(buf, "bye")) { break; } memset(buf, 0, sizeof(buf)); } return 0; } 三、libevent信号事件 signal.c #include <event2/event_compat.h> #include <event2/event_struct.h> #include <signal.h> static int signal_count = 0; void signal_handler(evutil_socket_t fd, short events, void *args) { printf("<sig: %d>\n", fd); ++signal_count; if (signal_count >= 2) { event_del((struct event *)args); } } int main() { struct event_base *base = event_base_new(); struct event ev; event_assign(&ev, base, SIGINT, EV_SIGNAL | EV_PERSIST, signal_handler, &ev); event_add(ev, NULL); event_base_dispatch(); event_base_free(base); return 0; } 四、libevent高并发服务器 #include <arpa/inet.h> #include <cstddef> #include <event2/bufferevent.h> #include <event2/bufferevent_struct.h> #include <event2/event_compat.h> #include <event2/listener.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> void read_cb(struct bufferevent *bev, void *ctx) { char buf[128] = {0}; size_t ret = bufferevent_read(bev, buf, sizeof(buf)); if (ret < 0) { exit(-1); } printf("read from: <%d>\n", *(int *)ctx); } void event_cb(struct bufferevent *bev, short what, void *ctx) { if (what & BEV_EVENT_EOF) printf("Client: <d> down", *(int *)ctx); bufferevent_free(bev); } void listen_cb(struct evconnlistener *listener, evutil_socket_t fd, struct sockaddr *addr, int socklen, void *arg) { static int gFd = -1; printf("Accept: <%d>\n", fd); gFd = fd; struct event_base *base = arg; struct bufferevent *bev = bufferevent_socket_new(base, fd, BEV_OPT_CLOSE_ON_FREE); if (NULL == bev) { exit(-1); } bufferevent_setcb(bev, read_cb, NULL, event_cb, &gFd); bufferevent_enable(bev, EV_READ); } int main() { struct event_base *base = event_base_new(); if (NULL == base) { printf("event_base \n"); exit(-1); } struct sockaddr_in server_addr; memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = 8000; server_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); struct evconnlistener *listen = evconnlistener_new_bind( base, listen_cb, NULL, LEV_OPT_CLOSE_ON_FREE | LEV_OPT_REUSEABLE, 10, (const struct sockaddr *)&server_addr, sizeof(server_addr)); event_base_dispatch(base); evconnlistener_free(listen); event_base_free(base); return 0; } ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/u011436427/article/details/138468568
-
DHCP是什么 1.1 DHCP定义 DHCP( Dynamic Host Configuration Protocol, 动态主机配置协议)定义: 存在于应用层(OSI) 前身是BOOTP(Bootstrap Protocol)协议 是一个使用UDP(User Datagram Protocol,用户数据报协议)协议工作的,被用于局域网的一个网络协议 主要是给网络快速自动地分配IP地址,能够帮助我们将IP地址和相关IP信息分配给网络中的计算机 常用的2个端口:67(DHCP server), 68(DHCP client) 1.2 DHCP服务器 一些运行有DHCP服务器端软件的特殊电脑 普通电脑中都内置有DHCP客户端模块,电脑接上网络后,DHCP客户端发现新连通的网络,会在该网络上找DHCP服务器。DHCP服务器将给电脑提供合理的网络配置,并把设置信息传回本机,本机和DHCP服务器之间的通信,都是通过DHCP协议进行的 1.3 DHCP主要作用 减少管理员的工作量 避免输入错误的可能 避免IP地址的冲突 提高了IP地址的利用率 方便客户端的配置:使client动态的获得IP地址、给设备配置正确的子网掩码,默认网关,DNS服务器地址信息等 2.DHCP的工作方式 2.1 DHCP的分配方式 自动分配 DHCP为客户端分配 租期为 永久的(无限长)的IP地址 手工分配 由 管理员为少数特定客户端(如WWW服务器等) 静态绑定固定的IP地址,通过DHCP将配置的固定IP地址发给客户端 动态分配 DHCP给主机指定一个有时间限制的IP地址,到达使用期限后或主机明确表示放弃这个地址时,客户端需要重新申请地址; 如果客户端没有重新申请,则这个地址将可能被其它的主机使用; 绝大多数客户端得到的都是这种 动态分配的地址(可以解决IP地址不够用的困扰) 2.2 DHCP的工作原理 租约(租约四部曲) (1).发现阶段(DISCOVER) DHCP客户端启动时,计算机发现本机上没有任何IP地址设定,将以广播方式通过UDP 67端口发送DHCP DISCOVER请求报文(客户端的MAC地址信息),来寻找DHCP服务器,请求IP地址租约,因为客户机还不知道自己属于哪一个网络,所以封包的源地址为0.0.0.0,目的地址为255.255.255.255,向网络发送特定的广播信息。 网络上每一台安装了TCP/IP协议的主机都会接收这个广播信息,但只有DHCP服务器才会做出响应。 请求获得IP,子网掩码,默认网关,DNS等信息 (2).提供阶段(OFFER ) 该客户对应的租约已存在且未被再次分配(包括租约到期和未到期的租约),则直接分配已记录的地址信息 该客户对应的租约不存在,服务器响应DHCP OFFER,会从对应的地址池中查找(注意:该处地址池应该有个前提条件,就是可用的地址池:应当和接收口的IP为同一网段,或同giaddr字段同一网段,否则无法分配);然后从尚未出租的IP地址中挑选一个最前面的ip地址连同其它的参数设定,响应给客户端一个DHCP OFFER (单播)报文,报文里面包括客户机MAC地址信息,TCP/IP的一些配置信息 (3).选择阶段(REQUEST) DHCP客户端可以接收到多个DHCP服务器的DHCP OFFER数据包,但只会挑选其中一个 DHCP OFFER(通常只接受收到的第一个DHCP OFFER数据包),然后会向网络发送一个DHCP REQUEST广播报文(报文中包含客户端的MAC地址、接受的租约中的IP地址、提供此租约的DHCP服务器地址等),告诉所有DHCP服务器它将指定接受哪一台服务器提供的 IP 地址,这样其他的服务器就会释放之前预分配给客户端的IP地址。同时,客户端还会向网络发送一个ARP 报文,查询网络上面有没有其它设备使用该 IP 地址,如果发现该 IP 已经被占用,客户端则会送出一个DHCP DECLIENT报文给 DHCP 服务器,拒绝接受其 DHCP OFFER,并重新发送 DHCP DISCOVER信息 此时,由于还没有得到DHCP服务器的最后确认,客户端仍然使用0.0.0.0为源IP地址,255.255.255.255为目标地址进行广播。 (4).确认阶段(ACK ) 当DHCP Server收到DHCP Client发送的DHCP Request后,确认要为该DHCP Client提供的IP地址,并根据客户机的MAC地址记录该次租约行为后,并便向该DHCP Client响应一个ACK报文(包含该IP地址,默认网关,DNS服务器等网络配置信息),来告诉DHCP Client可以使用该IP地址了,并告知客户端这个网络参数租约的期限,并且开始租约计时。然后DHCP Client就可以将该IP地址与网卡绑定,完成初始化过程。另外其他DHCP Server都将收回自己之前为DHCP Client提供的IP地址 客户端在接收到DHCP ACK后,会向网络发送针对此IP地址的ARP解析请求以执行冲突检测,查询网络上有没有其它机器使用该IP地址;如果发现该IP地址已经被使用,客户机会发出一个DHCP DECLINE数据包给DHCP服务器,拒绝此IP地址租约,并重新发送DHCP DISCOVER信息. 当用户不再需要使用分配IP地址时,就会"主动"向DHCP服务器发送RELEASE报文,告知服务器用户不再需要分配IP地址,DHCP服务器会释放被绑定的租约(在数据库中清除某个MAC对某个IP的租约记录,这样,这个IP就可以分配给下一个请求租约的MAC) 续约 DHCP客户机会在租期过去50%的时候,直接向为其提供IP地址的DHCP服务器发送DHCP REQUEST消息包;如果客户机接收到该服务器回应的DHCP ACK消息包,客户机就根据包中所提供的新的租期以及其它已经更新的TCP/IP参数,更新自己的配置,IP租用更新完成。如果没有收到该服务器的回复,则客户机继续使用现有的IP地址,因为当前租期还有50% 如果在租期过去50%的时候没有更新,则DHCP客户机将在租期过去87.5%的时候再次向为其提供IP地址的DHCP服务器联系;如果还不成功,到租约的100%时候,DHCP客户机必须放弃这个IP地址,重新申请 如果此时并没有DHCP可用,DHCP客户机会使用169.254.0.0/16中随机一个地址,并且每隔5min在进行尝试 2.3 DHCP协议包的组成 op: 1.client发送给server的封包,设为1 2.server发送给client的封包,设为2 htype: 硬件类别,1表示10Mb/s的以太网(Ethernet)的硬件地址 hlen: 硬件地址长度 hops:跳数,若封包需经过router传送,每站加 1,若在同一网内,为0(客户端初始设置为0) xid:DHCP REQUEST 时随机生成的一段字符串,服务器和客户端用来在它们之间交流请求和响 应,客户端用它对请求和应答进行匹配两个数据包拥有相同的xid说明他们属于同一次会话 seconds: 由客户端填充,表示从客户端开始获得IP地址或IP地址续借后所使用了的秒数 flags: 从0到15共16 bits 最左1Bit为1时表示 server将以广播方式传送封包给client 最左1Bit为0时表示 server将以单播方式传送封包给client ciaddr: 客户端会在发送请求时将自己的ip地址放在此处 yiaddr: 服务器会将想要分配给客户端的ip地址放在此处 siaddr: 一般来说是服务器的ip地址.但是注意:根据openwrt源码给出的注释,当报文的源地址、siaddr、option>server_id字段不一致(有经过跨子网转发)时,通常认为option>srever_id字段为真正的服务器ip,siaddr有可能是多次路由跳转中的某一个路由的ip giaddr: 如果需要跨子网进行DHCP地址发放,则在此处填入经过的路由器的ip地址 sname: 服务器主域名 file: 启动文件名,是一个空结尾的字符串。 options: 可以自由添加的部分,用于存放客户端向服务器请求信息和服务器的应答信息 2.4 DHCP中继 2.4.1 DHCP中继是什么 (1).在大型的网络中,可能会存在多个网段,DHCP客户机通过网络广播消息获得DHCP服务器的响应后得到IP地址。但广播消息是不能跨越网段的,因此,如果DHCP客户机和服务器在不同的网段内,即被路由器分割开来时,客户机向服务器申请IP地址的时候,就要用到DHCP中继 (2).当企业的内部网络规模较大时,通常被划分为多个不同的子网,网络内配置了VLAN,VLAN能隔离广播,而DHCP协议使用广播,DHCP服务器在哪个VLAN中,就只有在相同VLAN内的客户机能从DHCP服务器那里获取IP地址。所以,将DHCP这种特殊的广播信息在不同网段的VLAN之间转发,让其他VLAN的客户机也能从DHCP服务器那里获得IP地址,就要用到DHCP中继 (3).DHCP中继代理实际上是一种软件技术,安装了DHCP中继代理的设备(路由器,交换机,服务器)称为DHCP中继代理服务器,它承担不同网段间的DHCP客户机和服务器的通信 2.4.2 DHCP中继原理: (1). DHCP客户机申请IP租约,发送DHCP Discover包 (2). 中继代理收到该包,并转发给另一个网段的DHCP服务器 (3). DHCP服务器收到该包,将DHCP Offer包发送给中继代理 (4). 中继代理将地址租约(DHCP Offer)转发给DHCP客户端,接下来的过程,DHCP Request包从客户机通过中继代理转发到DHCP服务器,DHCP ACK消息从服务器通过中继代理转发到客户机 3.DHCP攻防 3.1 DHCP攻击的原理 (1).先使用攻击软件,不断向DHCP服务器发出 DHCP Request 报文请求,耗尽DHCP服务器的资源,让客户机不能上网 (2).自己伪造DHCP服务器,并“冒充”为一这个网段中的合法DHCP服务器,向客户端提供DHCP服务,这时候客户端的网关就是伪造的DHCP服务器的地址,攻击者就可以截获流量,并且还可以将数据包正常转发到网络上,不影响客户端的正常通信,只不过客户端上网的流量都在攻击者监控下,并且非法DHCP+攻击程序容易拿到用户信息,比如用户操作系统的账号密码,结果DHCP客户端将从非法DHCP服务器处获得不正确的IP地址、网关、DNS等配置参数 3.2 非法DHCP服务的防范 (1).在DHCP服务器上进行IP与MAC地址的绑定: 在通过DHCP服务器进行客户端IP地址等参数分配的网络中,对于一些重要部门的用户,可以通过在DHCP服务器上绑定IP与MAC地址,实现对指定计算机IP地址的安全分配 (2).使用DHCP Snooping信任端口: 能够过滤来自网络中非法DHCP服务器或其他设备的非信任DHCP响应报文.一旦将交换机的某一个端口设置为指向正确DHCP服务器的接入端口,那么交换机会自动丢弃从其他端口上接收到的DHCP响应报文.因为非信任端口,所以非法的DHCP服务器虽然接收到了信息,也发出了响应报文,但是在不信任端口处被阻断了,内网设备就不会得到不信任DHCP发送的响应报文了,就是不管你响应有多快,但是都半路夭折了。 4.DHCPv6介绍 4.1 DHCPv6定义 DHCPv6(Dynamic Host Configuration Protocol for IPv6,支持IPv6的动态主机配置协议)是针对IPv6编址方案设计的,为主机分配IPv6前缀、IPv6地址,DNS等其他网络配置参数的协议 基于UDPv6协议工作的 常用的2个端口:547(DHCP server,relay), 546(DHCP client) 由于在 IPv6中 没有广播报文,使用组播(默认所有DHCPv6服务器都会加入并侦听该组播组:FF02::1:2)报文,客户端也无需配置服务端的IPv6地址 4.2 DHCPv6协议的优势 可以为主机分配IPv6地址 可以为主机分配IPv6前缀,DNS服务器、域名等网络配置参数 可以为特定主机分配特定的地址/前缀 便于全网络的自动配置和网络层次性管理 4.3 DHCPv6的工作原理 4.3.1 DHCPv6网络构成 DHCPv6客户端:动态获取IPv6地址、IPv6前缀或其他网络配置参数的设备 DHCPv6服务器:负责为DHCPv6客户端分配IPv6地址、IPv6前缀和其他网络配置参数的设备 DHCPv6中继:DHCPv6客户端通过本地链路范围的组播地址与DHCPv6服务器通信,以获取IPv6地址和其他网络配置参数。如果服务器和客户端不在同一个链路范围内,则需要通过DHCPv6中继来转发报文,这样可以避免在每个链路范围内都部署DHCPv6服务器,既节省了成本,又便于进行集中管理 4.3.2 分配过程 交互两个消息的快速分配过程 (1) DHCPv6客户端在发送的Solicit消息中携带Rapid Commit选项,标识客户端希望服务器能够快速为其分配地址/前缀和网络配置参数 (2) 如果DHCPv6服务器支持快速分配过程,则直接返回Reply消息,为客户端分配IPv6地址/前缀和其他网络配置参数。如果DHCPv6服务器不支持快速分配过程,则采用交互四个消息的分配过程为客户端分配IPv6地址/前缀和其他网络配置参数 交互四个消息的分配过程 发现阶段 客户端发送Solicit报文来发现 DHCPv6 服务器,并请求DHCPv6 服务器为其分配 IPv6 地址和网络配置参数,由于客户端不知道 DHCPv6 服务器的 IPv6 地址,所以客户端用组播地址:FF02::1:2向同一链路范围内的所有DHCPv6服务器发送Solicit报文;Solicit报文中携带了客户端的DUID、需要请求的非临时地址、以及其他网络配置参数等信息 提供阶段 DHCPv6 服务器接收到Solicit报文后,选择按照 IPv6 地址从小到大的顺序采用循环查找方式,选择最新找到的可供分配的 IPv6 地址,然后通过Advertise报文以单播方式回应给客户端;Advertise报文里面携带了服务器的DUID、客户端的DUID、分配给客户端的IPv6地址及租期等信息 选择阶段 因为Solicit报文是组播发送的,所以如果同一链路范围内存在多个 DHCPv6 服务器,则接收到Solicit报文的服务器都会回应Advertise报文,如果有多个 DHCPv6 服务器向DHCPv6客户端回应Advertise报文,则 DHCPv6 客户端选择服务器优先级最高的Advertise报文,然后客户端以组播方式向同一链路范围内的所有 DHCPv6 服务器发送Request报文,该报文中包含客户端选择的 DHCPv6 服务器的DUID、客户端的DUID、客户端IPv6地址 确认阶段 当 DHCPv6 服务器收到Request报文后,对报文中携带的服务端DUID信息进行判断: 若报文中携带的服务端DUID不是本服务端的DUID,则对该Request报文不回应,同时将Request报文中请求的IPv6地址回收 若报文中携带的服务端DUID是本服务端的DUID,则以单播方式回应Reply报文,确认Request报文中请求的IPv6地址分配给客户端使用 4.4 DHCPv6报文格式 5.DHCPv4 vs DHCPv6 (1). 相同点 使用DHCP client, DHCP relay and DHCP server概念 使用scopes and leases概念 使用4个消息包的完整交互 (DHCP for IPv4使用Discover/Offer/Request/Acknowledge (DORA), DHCPv6使用Solicit/Advertise/Request/Reply (SARR)) 使用DHCP options为终端节点提供附加信息(DHCPv6的type code长度为16-bit) 支持Rapid Commit功能 (2). 差异点 标识客户端方式:DHCPv6使用DHCP Unique Identifiers (DUID) (RFC 6355),DHCPv4使用MAC地址. 消息类型名称不同,大部分功能类似 DHCPv4基于IPv4包传输,DHCPv6基于IPv6包传输 DHCPv6使用IPv6组播消息,DHCPv4使用广播的IPv4消息 DHCPv6中client与relay/server(RFC 6939)通信时使用link-local地址, DHCPv4使用unsolicited广播地址 监听的UDP端口不同, DHCPv4 relay/server监听udp端口67 client监听udp端口68, relay/server监听udp端口547 client监听udp端口546 DHCPv4可以在路由器上配置, stateful DHCPv6一般不能在路由器上配置 ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/zhoupenghui168/article/details/130281621
-
1.切换root登录(默认登录root) 2.输入下面代码,摁Tab键,系统会自动识别并且查找哪一个网卡或者网口的配置文件 多半是(00或者01) view /etc/netplan/0 注意:Linux操作系统下 注意空格 3.看到配置文件之后,摁 i 进入编辑模式 network: version: 2 renderer: NetworkManager ethernets: ens33: dhcp4: no addresses: [192.168.0.120/24] gateway4: 192.168.0.1 nameservers: addresses: [114.114.114.114, 8.8.8.8] ens33:代表网卡名称 dhcp:自动配置ip(默认no关闭) addresses:代表ip地址 /24:代表子网掩码255.255.255.0(25代表128) nameservers:DNS服务器地址 114.114.114.114 国内DNS服务器 8.8.8.8:谷歌DNS服务器 4.更改完成之后,摁esc退出,输入:wq (英文的: 和小写的wq)保存并退出 :wq 5.输入netplan apply ,应用这个配置文件 netplan apply 6.更换ip完成,测速网通不通 ping qq.com 7.网通,结束更换ip ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/weixin_53247206/article/details/134095495
-
摘要 在当前的技术生态中,Java仍然占据着重要地位,无论是对于企业应用还是新兴的云计算平台。本文将详细介绍如何在Linux服务器上安装Java开发工具包JDK 8、JDK 17以及最新的JDK 21,包括.tar.gz和.rpm安装方法,适合所有级别的读者,从编程新手到资深开发者。通过阅读本文,您将能够掌握从下载到配置的完整流程,确保Java环境的正确设置。涵盖内容包括但不限于操作命令、环境配置、版本选择理由及常见问题解答,本文将是您的最佳入门指南,帮助您在Ubuntu 20.04服务器上顺利部署JDK。关键词:JDK安装、Java、Ubuntu服务器、开发环境设置、Java版本升级。 引言 亲爱的 猫头虎 粉丝朋友们,今天我们将一起探索如何在服务器上安装和配置JDK 8, JDK 17以及最新的JDK 21。为什么要学习这项技术呢?无论您是在开发兼容性极强的企业软件,还是最前沿的云应用,Java都能提供强大的支持。此外,正确安装JDK对于运行Java应用、进行软件开发和使用广泛的工具框架至关重要。 在本文中,我们不仅会讨论如何安装这些版本的JDK,还会探讨它们各自的特点和适用场景,以帮助您做出最合适的选择。随着技术的迅速发展,保持更新和掌握最新工具的能力对于每位技术人员来说都是必不可少的。让我们一起开始这个技术之旅吧! 正文 📘 安装前的准备 系统要求 操作系统:Ubuntu 20.04 LTS 架构:x86_64(即AMD64) 用户权限:需要具有sudo权限的用户账户 工具和资源 wget:用于从命令行下载文件的工具 tar:用于解压缩文件的工具 rpm:RPM包管理器(适用于使用.rpm文件的系统) 📗 JDK 8 安装步骤 1. 下载 JDK 8 使用 .tar.gz 文件 https://download.oracle.com/java/8/archive/jdk-8u401-linux-x64.tar.gz 使用 .rpm 文件 https://download.oracle.com/java/8/archive/jdk-8u401-linux-x64.rpm 由于JDK8需要手动下载,且需要登录,我这里已经帮大家下载了最新版本 https://download.csdn.net/download/qq_44866828/89140291 2. 解压与安装 JDK 如果使用 .tar.gz 文件 sudo tar -xzvf jdk-8u401-linux-x64.tar.gz -C /usr/lib/jvm/ 如果使用 .rpm 文件 sudo rpm -ivh jdk-8u401-linux-x64.rpm 3. 设置环境变量 编辑 .bashrc 文件,添加 JDK 8 的环境变量。 echo 'export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_401' >> ~/.bashrc echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc source ~/.bashrc 4. 验证安装 java -version 📘 JDK 17 安装步骤 1. 下载 JDK 17 使用 .tar.gz 文件 wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz 使用 .rpm 文件 wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm 2. 解压与安装 JDK 如果使用 .tar.gz 文件 sudo tar -xzvf jdk-17_linux-x64_bin.tar.gz -C /usr/lib/jvm/ 如果使用 .rpm 文件 sudo rpm -ivh jdk-17_linux-x64_bin.rpm 3. 设置环境变量 更新 .bashrc文件,添加 JDK 17 的环境变量。 echo 'export JAVA_HOME=/usr/lib/jvm/jdk-17' >> ~/.bashrc echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc source ~/.bashrc 4. 验证安装 java -version 📙 JDK 21 安装步骤 1. 下载 JDK 21 使用 .tar.gz 文件 wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz 使用 .rpm 文件 wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.rpm 2. 解压与安装 JDK 如果使用 .tar.gz 文件 sudo tar -xzvf jdk-21_linux-x64_bin.tar.gz -C /usr/lib/jvm/ 如果使用 .rpm 文件 sudo rpm -ivh jdk-21_linux-x64_bin.rpm 3. 设置环境变量 更新 .bashrc 文件,添加 JDK 21 的环境变量。 echo 'export JAVA_HOME=/usr/lib/jvm/jdk-21' >> ~/.bashrc echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc source ~/.bashrc 4. 验证安装 java -version 1 📙 常见问题解答 (QA) Q1: 如果 java -version 还是显示旧的或无版本,该怎么办? A1: 确保 /usr/bin/java 是指向新安装的 JDK。使用 update-alternatives 命令可以管理多版本。 Q2: 安装 JDK 时提示权限不足,应该如何解决? A2: 使用 sudo 前缀确保你有足够的权限进行安装。 📘 小结 通过以上步骤,您可以在Ubuntu 20.04 LTS服务器上成功安装 JDK 8, JDK 17, 和 JDK 21,为运行和开发Java应用准备好环境。 参考资料 Oracle JDK Downloads Ubuntu Documentation 表格:核心知识点总结 功能 JDK 8 JDK 17 JDK 21 主要特性 兼容性强,广泛使用于企业环境 最新长期支持版本,提供先进功能 最前沿的版本,包含最新Java特性 安装命令 wget 和 tar, 环境变量配置 wget 和 tar, 环境变量配置 wget 和 tar, 环境变量配置 适用场景 旧系统兼容、现有项目 新项目、需要最新Java特性的场景 最新技术试验和高端开发需求 总结 安装 JDK 是每位 Java 开发者必须掌握的基本技能之一。不论是开发现代应用程序还是维护旧有系统,正确配置Java环境都是成功的关键。 未来展望 随着 Java 的不断发展,我们可以预见到更多的功能、更好的性能优化在未来版本中出现。保持对新技术的关注和学习,将使我们能够更好地适应变化,抓住机遇。 温馨提示 如果对本文有任何疑问,欢迎点击下方名片,了解更多详细信息!我们猫头虎科技博客始终致力于与您分享最新、最实用的技术资讯。🌟 ———————————————— 猫头虎技术团队 原文链接:https://blog.csdn.net/qq_44866828/article/details/137777412
-
锐文网卡10G25G40G100G在飞腾S5000C主板下iperf性能测试(100GbE 40G 25G 10G )(一)测试环境测试测试锐文网卡100GbE 40G 25G 10G在iperf下测试服务器Phytium服务器CPUPhytium S5000C 16 Core系统内存16G*2@DDR4 5600MT/s网卡100GbE 40G 25G 10G网卡操作系统openEuler 22.03 (LTS-SP1)内核版本Linux localhost.localdomain 5.15.0.5.15-v2-s5000cGCC版本gcc 版本 10.3.1 (GCC)DPDK版本dpdk-20.08测试版本Software:dpdk-20.08测试配置1网卡,1口,单口配4个队列, 共4个队列用4个核Kernel下使用iperf作为测试工具,一张网卡作为客户端发送以太网包,另一张网卡作为服务端接收以太网包,测试在Kernel下最大性能。测试时间60秒UDP流/TCP流测试模型:100G服务器一为客户端,服务器二为服务端 0口TCPUDP通道发送带宽Gbps接收带宽Gbps重传数线程数发送带宽Gbps接收带宽Gbps延时ms丢包线程数123.823.80311.811.80.0020.00%1235.935.90311.811.80.0010.00%1329.629.60311.811.80.0010.00%1410.210.20311.811.800.00%15 11.811.80.0030.00%16 11.811.80.0070.00%17 11.811.80.0080.00%18 11.811.80.0010.00%1总和99.599.50394.494.40.0030.00%1 1口TCPUDP通道发送带宽Gbps接收带宽Gbps重传数线程数发送带宽Gbps接收带宽Gbps延时ms丢包线程数121.821.80311.811.80.0010.00%1220.720.70311.811.80.0020.00%1333.333.30311.811.80.0020.00%1423.723.70311.811.80.0020.00%15 11.811.80.0030.00%16 11.811.80.0050.00%17 11.811.80.0010.00%18 11.811.80.0040.00%1总和99.599.50394.494.40.0030.00%125G服务器2作为客户端 TCPUDP端口发送带宽Gbps接收带宽Gbps重传数线程数发送带宽Gbps接收带宽Gbps延时ms丢包%线程数024.8024.800124.7024.700.0130.00%1124.8024.800124.7024.700.0110.00%1服务器2作为服务端 TCPUDP端口发送带宽Gbps接收带宽Gbps重传数线程数发送带宽Gbps接收带宽Gbps延时ms丢包%线程数024.8024.800121.8021.800.0020.00%1124.8024.800122.1022.100.0010.00%110G服务器2作为客户端 TCPUDP端口发送带宽Gbps接收带宽Gbps重传数线程数发送带宽Gbps接收带宽Gbps延时ms丢包%线程数09.919.91019.929.920.0090.00%119.909.91019.929.920.0150.00%1服务器2作为服务端 TCPUDP端口发送带宽Gbps接收带宽Gbps重传数线程数发送带宽Gbps接收带宽Gbps延时ms丢包%线程数09.909.91019.939.930.0060.00%119.899.89019.939.930.0120.00%1
-
在当前的信息化时代,服务器监控是保障企业信息安全、提升业务连续性的重要手段。随着技术的发展,市面上涌现出了许多好用的服务器监控工具。本文将为您推荐几款功能强大、易于使用的服务器监控工具。ZabbixZabbix是一款功能强大的开源网络监控软件,具有易于安装和配置的特点。它支持对服务器的各种指标进行监控,包括CPU利用率、内存使用情况、网络流量等。通过Web界面,用户可以实时查看服务器的状态,并设置报警规则,以便及时发现并解决问题。此外,Zabbix还具备灵活的插件式架构,用户可以根据实际需求选择合适的插件进行扩展。NagiosNagios是一款广泛使用的服务器监控系统,能够监控网络设备、服务器和应用程序等。它支持多种操作系统和网络设备,具有高度的可定制性。Nagios采用插件式架构,用户可以根据自己的需求选择合适的插件进行监控。同时,Nagios提供了丰富的报警功能,可以通过邮件、短信等方式通知管理员服务器的异常情况。PrometheusPrometheus是一款开源的监控系统和时间序列数据库,适用于大规模分布式系统的监控。它具备高度可扩展性和灵活性,支持多种数据模型和查询语言。Prometheus能够收集并存储大量的监控数据,并通过直观的图形化界面展示给用户。此外,Prometheus还提供了强大的告警功能,能够根据预设的规则触发告警通知。AnturisAnturis是一个基于云的SaaS平台,可监控Windows和Linux服务器、网站以及IT基础架构。它具备实时监控、性能分析、告警通知等功能,能够帮助用户全面了解服务器的运行状况。此外,Anturis还提供了丰富的可视化报告,方便用户对监控数据进行深入分析。SeaLionSeaLion是一个基于云的Linux服务器监控工具,具有轻量级、易用的特点。它能够实时监控服务器的CPU、内存、磁盘等关键指标,并通过直观的图表展示给用户。此外,SeaLion还提供了强大的告警功能,能够在服务器出现异常时及时通知用户。总结以上推荐的几款服务器监控工具各具特色,适用于不同的场景和需求。在实际应用中,用户可以根据自己的实际情况选择合适的工具进行使用。同时,随着技术的不断发展,未来还将涌现出更多优秀的服务器监控工具,为企业的信息安全和业务连续性提供有力保障。
-
=========================================================================apt安装steamcmdsudo add-apt-repository multiversesudo dpkg --add-architecture i386sudo apt update#执行add-apt-repository的时候报错类似说找不到包,那么需要执行下面两条命令安装一下软件sudo apt-get updatesudo apt-get install software-properties-commonsudo apt install steamcmd1)Tab选择同意,然后回车2)选择ok一路下一步,我在部分厂商服务器安装的时候会失败。如果安装失败,或者报错了那么就按照下面手动来=============================================================================手动安装steamcmd1)sudo apt-get install lib32gcc-s1 #安装依赖项,选择OK,这里安装报错也没关系,继续往下执行(官方说需要这个依赖,但是执行失败了也可以运行幻兽帕鲁服务器)2)sudo useradd -m steam #这里要给steam单独创建一个用户,直接root做的话后面运行帕鲁服务器的时候会报错,提示不能在root用户下执行。这里为了方便,创建好用户,没有设置密码,直接切换到用户了,需要密码可以执行sudo passwd steam3)su - steam #以 root 用户身份,升级为 Steam 用户。如果不是以 root 身份登录,而是用于执行管理,按如下方式升级为 Steam 用户:sudo -iu steam4)mkdir ~/Steam && cd ~/Steam #为 SteamCMD 创建一个目录并切换到它5)curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf - #下载并解压 Linux 版 SteamCMD6)./steamcmd.sh #运行steamcmd,会自动更新文件,等他更新完成7)login anonymous #这步如果连接不上steamcmd服务器的话,修改下dns,sudo resolvectl dns eth0 8.8.8.8 8.8.4.4;resolvectl status8)app_update 2394010 validate #开始下载幻兽帕鲁服务器,大概2.5G9)quit #提示下载成功后退出steamcmd10)exit11)sudo -u steam -s #这里以root身份升级为Steam用户没法用Tab一键补全,有点麻烦,我这里还是正常切换到steam用户12)cd /home/steam/Steam/steamapps/common/PalServer13)./PalServer.sh #运行帕鲁服务器,执行报错了,现在来处理报错14)ctrl+c #强制结束15)mkdir -p ~/.steam/sdk64/16)cd /home/steam/Steam17)./steamcmd.sh18)login anonymous19)app_update 100720)quit #下载成功,退出steamcmd21)cp ~/Steam/steamapps/common/Steamworks\ SDK\ Redist/linux64/steamclient.so ~/.steam/sdk64/22)cd /home/steam/Steam/steamapps/common/PalServer #现在重新运行幻兽帕鲁服务器23)./PalServer.sh #这次运行帕鲁服务器,成功了,没有报错然后就可以进游戏了
-
我这里用的是Centos7.9====================================================================下载steamcmdyum install -y wget libxcb glibc.i686 libcurl.i686 #下载相关依赖工具sudo useradd -m steam #这里要给steam单独创建一个用户,直接root做的话后面运行帕鲁服务器的时候会报错,提示不能在root用户下执行sudo -u steam -s #切换到steam用户cd /home/steam #进入主文件夹wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz #下载steamcmdtar -zxvf steamcmd_linux.tar.gz #解压steamcmd./steamcmd #打开steamcmd#如果运行steamcmd报错/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory,那么就是上面的glibc.i686没有安装,那么你需要执行下面命令进行安装yum install glibc.i686 (glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。由于 glibc 囊括了几乎所有的 UNIX 通行的标准,可以想见其内容包罗万象。而就像其他的 UNIX 系统一样,其内含的档案群分散于系统的树状目录结构中,像一个支架一般撑起整个操作系统。)=======================================================================================下载幻兽帕鲁服务器login anonymous #在刚刚运行的steamcmd里面输入该命令,然后回车app_update 2394010 validate #下载/更新幻兽帕鲁服务器,文件大概2.5G大小exit #下载好后退出,steamcmdcd /home/steam/Steam/steamapps/common/PalServer #切换到刚刚下载的幻兽帕鲁目录./PalServer.sh #运行幻兽帕鲁服务器延迟还不错===========================================================================修改世界参数(具体参数含义,我的其他帖子有可以参考下)cd /home/steam/Steam/steamapps/common/PalServer #在该路径下vi /DefaultPalWorldSettings.ini #这是默认配置模板,复制里面的全部内容,推荐用ssh工具连接到服务器,一般鼠标选中内容,鼠标右键有复制的选项。按住键盘shift+: 输入q 然后回车 #退出vi编辑器cd /home/steam/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer #拿着刚才复制的内容来到该路径下vi PalWorldSettings.ini #编辑文件键盘按下 i 进入编辑模式,然后把刚刚复制的内容,粘贴进来键盘按下ESC退出编辑模式,然后键盘同时按shift+: 输入wq! 保存并退出cd /home/steam/Steam/steamapps/common/PalServer./PalServer.sh #重启帕鲁服务器,就生效了
-
接我上一篇文章,我是把steamcmd下载到C:\steamcmd这个路径的。如果你是下载到其他路径,那么就修改对应路径。回顾一下:之前我们启动幻兽帕鲁服务器的时候是在steamapps/common/PalServer 这个路径,运行PalServer.exe这个文件1)查看帕鲁服务器世界配置默认配置文件:路径是:steamapps/common/PalServer 这里有个 DefaultPalWorldSettings这个文件,用记事本打开它,这个里面记录的是初始配置,复制它2)复制内容,然后修改幻兽帕鲁服务器的世界配置文件:文件路径:steamapps/common/PalServer/Pal/save/Config/WindowsServer 记事本打开该文件PalWorldSettings,把刚刚复制的代码粘贴覆盖之前的内容。3)更改内容保存,之后重新启动幻兽帕鲁服务器。就是这个文件steamapps/common/PalServer/PalServer.exe-------------------------------------------------------------那么这个文件里面的参数,我们要知道他表示什么意思才能进行修改-----------------------------------下面给大家找到了各参数含义,大家可以对照进行修改Difficulty=None #难度None或DifficultyDayTimeSpeedRate=1.000000 #白天流逝速度NightTimeSpeedRate=1.000000 #夜晚流逝速度ExpRate=1.000000 #经验值倍率PalCaptureRate=1.000000 #捕捉概率倍率PalSpawnNumRate=1.000000 #帕鲁出现数量倍率PalDamageRateAttack=1.000000 #帕鲁攻击伤害倍率PalDamageRateDefense=1.000000 #帕鲁承受伤害倍率PlayerDamageRateAttack=1.000000 #玩家攻击伤害倍率PlayerDamageRateDefense=1.000000 #玩家承受伤害倍率PlayerStomachDecreaceRate=1.000000 #玩家饱食度降低倍率PlayerStaminaDecreaceRate=1.000000 #玩家耐力倍率PlayerAutoHPRegeneRate=1.000000 #玩家生命值恢复倍率PlayerAutoHpRegeneRateInSleep=1.000000 #玩家睡眠时生命恢复倍率PalStomachDecreaceRate=1.000000 #帕鲁饱食度降低倍率PalStaminaDecreaceRate=1.000000 #帕鲁耐力降低倍率PalAutoHPRegeneRate=1.000000 #帕鲁生命值自然恢复倍率PalAutoHpRegeneRateInSleep=1.000000 #帕鲁睡眠时生命恢复倍率BuildObjectDamageRate=1.000000 #对建筑物伤害倍率BuildObjectDeteriorationDamageRate=1.000000 #建筑物劣化速度倍率CollectionDropRate=1.000000 #可采集物品掉落倍率CollectionObjectHpRate=1.000000 #可采集物品生命值倍率CollectionObjectRespawnSpeedRate=1.000000 #可采集物品生成速率EnemyDropItemRate=1.000000 #敌方掉落物品率DeathPenalty=All #死亡惩罚None不掉落Item只掉物品不掉装备ItemAndEquipment掉物品和装备All全都掉bEnablePlayerToPlayerDamage=False #启用玩家对玩家伤害功能bEnableFriendlyFire=False #火焰伤害bEnableInvaderEnemy=True #否会发生袭击事件bActiveUNKO=False #没有搜到这个的用途bEnableAimAssistPad=True #启用瞄准辅助手柄bEnableAimAssistKeyboard=False #准星开启DropItemMaxNum=3000 #掉落物品最大数量DropItemMaxNum_UNKO=100 #掉落物品最大数量_UNKOBaseCampMaxNum=128 #大本营最大数BaseCampWorkerMaxNum=15 #大本营工人最多人数DropItemAliveMaxHours=1.000000 #掉落物品存在最大时长bAutoResetGuildNoOnlinePlayers=False #自动重置没有在线玩家的公会AutoResetGuildTimeNoOnlinePlayers=72.000000 #无在线玩家时自动重置生成时间GuildPlayerMaxNum=20 #公会玩家最大数量PalEggDefaultHatchingTime=72.000000 #帕鲁蛋默认孵化时间WorkSpeedRate=1.000000 #工作速率bIsMultiplay=False #多人游戏bIsPvP=False #是否开启PvPbCanPickupOtherGuildDeathPenaltyDrop=False #可拾取其他公会的死亡掉落物bEnableNonLoginPenalty=True #启用不登录惩罚bEnableFastTravel=True #启用快速旅行bIsStartLocationSelectByMap=True #通过地图选择起始位置bExistPlayerAfterLogout=False #注销后玩家仍然存在bEnableDefenseOtherGuildPlayer=False #启用防御其他公会玩家功能CoopPlayerMaxNum=4 #合作玩家最大人数ServerPlayerMaxNum=32 #服务器玩家最大人数ServerName="Default Palworld Server" #服务器名称ServerDescription="" #服务器描述AdminPassword="" #管理员密码ServerPassword="" #服务器密码PublicPort=8211 #服务器端口PublicIP="" #服务器ipRCONEnabled=False #启用 RCONRCONPort=25575 #RCON端口Region="" #地区bUseAuth=True #使用授权#由于游戏优化问题,这个游戏长时间运行内存可能会出现爆满,尤其是服务器如果内存较小,可以手动重启服务器。
上滑加载中
推荐直播
-
TinyEngine低代码引擎系列.第1讲——低代码浪潮之下,带你走进TinyEngine
2024/11/11 周一 16:00-18:00
李老师 高级前端开发工程师
低代码浪潮之下,带你走进TinyEngine。李旭宏老师将从低代码的发展趋势、TinyEngine的项目介绍,三方物料组件的使用、跨技术栈的使用、源码生成能力的差异性对比等多个方面带大家对TinyEngine低代码引擎有一个更清晰的认知和了解。
即将直播 -
0代码智能构建AI Agent——华为云AI原生应用引擎的架构与实践
2024/11/13 周三 16:30-18:00
苏秦 华为云aPaaS DTSE技术布道师
大模型及生成式AI对应用和软件产业带来了哪些影响?从企业场景及应用开发视角,面向AI原生应用需要什么样的工具及平台能力?企业要如何选好、用好、管好大模型,使能AI原生应用快速创新?本期直播,华为云aPaaS DTSE技术布道师苏秦将基于华为云自身实践出发,深入浅出地介绍华为云AI原生应用引擎,通过分钟级智能生成Agent应用的方式帮助企业完成从传统应用到智能应用的竞争力转型,使能千行万业智能应用创新。
去报名
热门标签