devops icon indicating copy to clipboard operation
devops copied to clipboard

devops 经验总结实践与产品化

Results 126 devops issues
Sort by recently updated
recently updated
newest added

https://istio.io/latest/zh/docs/ops/configuration/traffic-management/multicluster/ https://cloud.tencent.com/developer/article/2044303 https://xie.infoq.cn/article/73f6afb90e158f008f2fd26f4 https://liqo.io/ https://docs.liqo.io/en/v0.9.4/features/peering.html https://yuluyan.com/posts/uwsgi-server/

k8s

https://github.com/timonwong/uwsgi_exporter https://pypi.org/project/uwsgi-prometheus/ https://pypi.org/project/uwsgitop/ https://www.digitalocean.com/community/tutorials/how-to-setup-uwsgi-on-ubuntu-12-10#step-6-confirmation-access-the-application https://developer.aliyun.com/article/652884 https://www.bloomberg.com/company/stories/configuring-uwsgi-production-deployment/ strict = true:启用严格模式,uwsgi将在配置文件中发现未知选项时抛出错误。 master = true:启用主进程模式,uwsgi将创建一个主进程来管理工作进程。 enable-threads = true:启用多线程模式,uwsgi将在工作进程中启用线程。 vacuum = true:在关闭时删除套接字文件。 single-interpreter = true:所有工作进程共享一个解释器。 die-on-term = true:接收到SIGTERM信号时关闭uwsgi进程,而不是重新生成工作进程。 need-app = true:要求配置文件中必须指定应用程序。 disable-logging = true:禁用uwsgi的内置日志记录功能。...

The interesting question is what queue does this value control? One might guess that it controls the driver queue size, but in reality, it serves as a default queue length...

Linux 网卡中的 Driver Queue,也称为环形缓冲区(ring buffer),是用于在网络设备的驱动程序和协议栈之间传递数据的一种机制。它的主要原理是利用环形缓冲区来存储网络数据包,并通过指针来追踪读写位置。 以下是深入分析 Linux 网卡中 Driver Queue 的机制与原理的详细说明: 1. 环形缓冲区的结构:Driver Queue 是一个环形缓冲区,由一块连续的内存区域组成。它通常由多个描述符(Descriptor)组成,每个描述符包含了一个数据包的相关信息,如数据包的长度、起始地址等。描述符之间通过链表或数组进行连接。 2. 写入数据包:当网络设备接收到一个数据包时,驱动程序将数据包复制到环形缓冲区中的一个空闲描述符中,并更新写指针(Write Pointer)指向下一个空闲描述符。这样,驱动程序可以不受协议栈的影响,快速地接收和处理数据包。 3. 读取数据包:协议栈通过读取环形缓冲区中的描述符来获取数据包。它会检查描述符的状态,并根据描述符中的信息读取数据包的内容。读取完成后,协议栈会更新读指针(Read Pointer)指向下一个可读描述符。 4. 解决读写冲突:由于读写指针是并发访问的,可能会导致读写冲突。为了解决这个问题,Driver Queue 通常采用了一些同步机制,如使用原子操作或自旋锁来保护读写指针的访问。 5. 触发数据包处理:当协议栈读取到一个数据包时,它会触发相应的处理函数进行进一步的处理。这可能包括数据包的解析、协议处理、路由选择等操作。 总结来说,Linux 网卡中的 Driver...

在Linux网卡中,Driver Queue(也称为环形缓冲区)是一个用于存储网络数据包的缓冲区。它是网络驱动程序与网络协议栈之间的数据传输通道。 当网络数据包从物理网络接口接收或发送时,它们会被放入Driver Queue中,然后由网络驱动程序进行处理。驱动程序负责管理Driver Queue的读写操作,以及将数据包传递给上层的网络协议栈或从协议栈接收数据包。 Driver Queue通常是一个环形缓冲区,它可以容纳多个数据包。驱动程序使用指针来跟踪Driver Queue中数据包的位置。当数据包被读取或写入后,指针会相应地移动。 Driver Queue的大小(即环形缓冲区的大小)可以通过调整驱动程序的配置参数进行设置。较大的Driver Queue可以提供更好的网络吞吐量,但也会消耗更多的内存。 通过管理Driver Queue的读写操作和调整其大小,可以优化网络性能和吞吐量,并减少网络延迟。

在Linux中,网卡的Byte Queue Limits (BQL) 是一种机制,用于控制数据包在网络接口上的排队和处理。 BQL的目的是优化网络流量的处理,特别是在高负载情况下。它通过在网卡驱动程序中实现一个队列,用于存储待发送的数据包。这个队列可以根据网络接口的性能和负载情况进行动态调整。 具体来说,BQL通过两个参数来控制队列的大小:byteq_limit和byte_hw_limit。byteq_limit是指队列的软限制,超过这个限制时,数据包将开始被丢弃。byte_hw_limit是指队列的硬限制,超过这个限制时,数据包将被立即丢弃。 BQL使用了一种自适应算法来调整队列的大小。它会根据网络接口的负载情况和传输速率来动态调整byteq_limit和byte_hw_limit。这样可以确保网络接口在高负载情况下不会出现数据包丢失或性能下降的问题。 总的来说,BQL是Linux中一种用于优化网络流量处理的机制,通过动态调整队列大小来提高网络性能和稳定性。它可以在高负载情况下避免数据包丢失,并确保网络接口的性能不会受到影响。 要查看网卡的BQL(Byte Queue Limit)信息,可以使用以下方法: 1. 使用ethtool命令:ethtool是一个用于配置和显示网络接口驱动程序和硬件设置的工具。在终端中执行以下命令可以查看网卡的BQL信息: ``` ethtool -g ``` 其中,是您要查看BQL信息的网卡的名称,例如eth0、eth1等。 2. 使用sysfs文件系统:Linux内核提供了sysfs文件系统,它提供了一种以树状结构组织设备和驱动程序信息的方法。网卡的BQL信息可以在/sys/class/net//queues/目录下找到。执行以下命令可以查看BQL信息: ``` cat /sys/class/net//queues/rx-/byte_queue_limits ``` 其中,是您要查看BQL信息的网卡的名称,是要查看的接收队列的编号。 注意:上述方法适用于Linux系统。在其他操作系统上,可能需要使用不同的命令或工具来查看网卡的BQL信息。

在Linux中,网卡的txqueuelen是指传输队列长度(Transmission Queue Length),它是用来控制网络接口(网卡)发送数据包的队列的长度。 当应用程序向网络接口发送数据包时,这些数据包会被放入网卡的传输队列中,然后逐个发送到网络上。txqueuelen参数决定了队列的最大长度。 较大的txqueuelen值可以在网络负载较重的情况下提高性能,因为可以容纳更多的数据包,减少了丢包的可能性。然而,如果队列长度过大,可能会增加延迟。 可以使用ifconfig或ip命令来查看和设置网卡的txqueuelen值。例如,使用以下命令可以查看eth0网卡的txqueuelen值: ``` ifconfig eth0 ``` 要设置txqueuelen值,可以使用以下命令: ``` ifconfig eth0 txqueuelen ``` 其中,是要设置的txqueuelen值。

在Linux中,网络缓冲是指在传输层和队列调度之间的中间存储网络数据包的机制。这种缓冲机制在管理网络流量和确保数据包的有效传输方面起着关键作用。 缓冲的主要目的是在数据包等待被队列调度处理之前,为传入的数据包提供临时存储空间。这样可以更好地控制数据包的传输,避免网络中的数据包丢失或拥塞。 缓冲帮助平滑处理数据包到达速率的波动,为传输层和队列调度之间提供缓冲区。它使得网络堆栈的不同组件之间能够更好地协调,确保数据包按照受控和有序的方式传输。 通过使用缓冲,网络网卡可以处理突发的数据包流量,而不会压垮队列调度或导致数据包丢失。它还提供了在管理网络流量时的灵活性,允许使用不同的调度和优先级策略。 总的来说,Linux中传输层和队列调度之间的网络缓冲机制有助于优化网络流量,提高性能并确保可靠的数据包传输。

QDisc(Queueing Discipline)是 Linux 网络子系统中用于管理网络数据包排队和调度的一种机制。它决定了网络数据包在发送和接收过程中的排队顺序、优先级和调度策略。 QDisc 可以被看作是一种队列管理器,它负责管理网络数据包的排队和调度,以确保数据包在网络传输中的有序性和公平性。它可以根据不同的需求和场景,选择不同的调度策略,如先进先出(FIFO)、公平队列(Fair Queueing)、优先队列(Priority Queueing)等。 QDisc 通常与其他网络子系统组件如队列(Queue)、类别(Class)、过滤器(Filter)等一起使用,通过这些组件的协同工作,可以实现更复杂的网络流量控制和管理功能。 总之,QDisc 是 Linux 网络子系统中的一种机制,用于管理网络数据包的排队和调度,以实现网络传输的有序性和公平性。

https://forums.developer.nvidia.com/t/netdev-watchdog-eth0-mlx5-core-transmit-queue-timed-out/262453 https://access.redhat.com/solutions/4434241 https://gitee.com/openeuler/kernel/issues/I7PN3U?from=project-issue https://download.lenovo.com/servers/mig/2021/09/06/54624/mlnx-lnvgy_dd_nic_cx.3.ib-5.0-2.1.8.0-0_rhel8_x86-64.pdf ![image](https://github.com/heidsoft/devops/assets/1329974/6b464e8b-ef49-4be8-bd6b-9ef6df206388) https://www.h3c.com/cn/BizPortal/DownLoadAccessory/AccessoryDetail.aspx?ID=8b5b2f51-0c4b-46d2-b7fc-24a9dc439ec6 https://www.coverfire.com/articles/queueing-in-the-linux-network-stack/ https://lkml.kernel.org/netdev/[email protected]/