Cloudflare 低延迟 IP 地址历史记录

IP 地址已发送已接收丢包率平均延迟下载速度 (MB/s)
104.17.74.8044050.2813.02
104.25.213.24644050.6212.35
104.16.107.2544050.1812.31
104.18.230.2744049.5112.01
104.17.73.8244050.0610.79
104.24.49.7444050.4810.28
104.18.37.6044049.413.79
104.24.19.3144050.823.14
104.17.212.144049.290.46
104.25.193.21444052.520.07
2022.4.5

IPv4

173.245.48.0/20
103.21.244.0/22
103.22.200.0/22
103.31.4.0/22
141.101.64.0/18
108.162.192.0/18
190.93.240.0/20
188.114.96.0/20
197.234.240.0/22
198.41.128.0/17
162.158.0.0/15
104.16.0.0/13
104.24.0.0/14
172.64.0.0/13
131.0.72.0/22

IPv6

2400:cb00::/32
2606:4700::/32
2803:f800::/32
2405:b500::/32
2405:8100::/32
2a06:98c0::/29
2c0f:f248::/32

解决502 bad gateway的九种方案及原因

502 Bad Gateway 是一种HTTP协议的服务器端错误状态代码,它表示作为网关或代理角色的服务器,从上游服务器(如tomcat、php-fpm)中接收到的响应是无效的。

Gateway (网关)在计算机网络体系中可以指代不同的设备,502 错误通常不是客户端能够修复的,而是需要由途径的Web服务器或者代理服务器对其进行修复。

总结:php-cgi进程数不够用、php执行时间长、或者是php-cgi进程死掉,都会出现502错误.

502系列错误代码

  • HTTP Error 502 Bad Gateway HTTP 错误 502 网关错误
  • HTTP 502
  • 502 Service Temporarily Overloaded 502 服务暂时超载
  • Temporary Error (502) 临时错误 (502)
  • 502 Server Error: The server encountered a temporary error and could not - - complete your request 502 服务器错误:服务器遇到临时错误,无法完成您的请求
  • 502 Bad Gateway Nginx 502 网关坏 Nginx

5XX系列错误代码

  • 500 Internal Server ErrorWeb 服务器遇到遇到阻止其无法完成其任务(即客户端请求)的条件时,将显示此错误
  • 501 Not Implemented 服务器无法支持或识别请求方法。 它缺少处理请求的功能,因此它会响应此错误
  • 502 Bad Gateway 服务器之间发生了错误,充当代理或网关时,您的服务器在尝试处理请求时未收到上游服务器的正确响应
  • 503 Service Unavailable 由于正在进行维护或服务器当前过载而导致服务器无法处理请求的临时情况
  • 504 Gateway Timeout 服务器再次充当代理或网关时,没有及时从另一个服务器(例如DNS)获得响应,因此它无法处理请求
  • 505 HTTP Version Not Supported 当您的Web服务器不能或将不支持源自请求的HTTP协议版本时,将发生他的错误。 该错误通常包含服务器为什么不合作的描述

Nginx 502 Bad Gateway 错误的原因及解决方法

多数是后端问题也就是PHP的问题, 简单的情况可以刷新(不是一般的刷新哦,Ctrl + F5 强制刷新)解决。在php服务当中,有两个参数非常的重要:max_requeststmax_children,具体的原因必须要查看日志才可以弄明白!

1、检查PHP基础设置
修改/www/server/php/80/etc/php-fpm.conf request_terminate_timeout = 100 ,把100改成5
php执行超时,修改/usr/local/php/etc/php.ini 将max_execution_time300

2、FastCGI进程是否已经启动

ps aux | grep php

查看是否启动了php-fpm服务;

3、FastCGI worker进程数是否不够
运行linux命令:

netstat -anpo | grep “php-cgi” | wc -l

判断是否接近FastCGI进程,接近配置文件中设置的数值,表明worker进程数设置太少;

4、FastCGI执行时间过长
PHP程序执行时间超过了Nginx等待时间,可以适当增加nginx.conf配置文件中FastCGItimeout时间,根据实际情况调高以下参数值:

fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;

5、FastCGI Buffer不够
nginx和apache一样,有前端缓冲限制,可以调整缓冲参数

fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;

6、FastCGI 缓冲区设置过小
首先查找nginx日志文件,目录/var/log/nginx,在日志中发现了如下错误:

[error] 15421#0: *16 upstream sent too big header while reading response header from upstream意思是nginx缓冲区bug造成,网站页面占用缓冲区可能过大。增加缓冲区彻底解决了Nginx 502 Bad Gateway,方法如下:

http {
    ...
    fastcgi_buffers 8 16k;
    fastcgi_buffer_size 32k;
    ...
}

请根据服务器已经网站的情况自行增大上述两个配置项。

7、代理缓冲区设置过小(使用了nginx反向代理的情况)
如果header过大,超出了默认的1k,就会引发upstream sent too big header

server {
        listen       80;
        server_name  *.test.com;

        location / {

###############添加这3行
            proxy_buffer_size 64k;
            proxy_buffers   32 32k;
            proxy_busy_buffers_size 128k;
###############添加这3行
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP       $remote_addr;
            proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
............
}

8、默认php-cgi的进程数设置过少
在安装好使用过程中出现502问题,一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 将其中的max_children的值适当增加。也有可能是max_requests的值不够用。需要说明的是这连个配置项占用内存很大,请根据服务器配置进行设置。否则可能起到反效果。

9、其它原因
如果您上网时在您尝试访问的所有网站上都看这个问题,有两种可能
①你的ISP重大设备故障/过载
②有问题的内部互联网连接如您的防火墙无法正常运作。
在种情况下,只有您的ISP可以帮助您。在第二种情况下,你需要解决什么,那是阻止你进入互联网。
如果您只有在部分尝试访问的网站中出现此问题,那很可能是一个问题,即这些网站之一,其设备故障或超载。联系你网站的管理员。

本文持续更新补充…

群晖Nas安装pip只需两行命令

Python2.7匹配的pip

wget https://bootstrap.pypa.io/pip/2.7/get-pip.py

Proxy request sent, awaiting response... 200 OK
Length: 1908226 (1.8M) [text/x-python]
Saving to: 'get-pip.py'

get-pip.py          100%[===================>]   1.82M   738KB/s    in 2.5s
python get-pip.py

DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality.
Collecting pip<21.0
  Downloading pip-20.3.4-py2.py3-none-any.whl (1.5 MB)
     |████████████████████████████████| 1.5 MB 352 kB/s
Collecting setuptools<45
  Downloading setuptools-44.1.1-py2.py3-none-any.whl (583 kB)
     |████████████████████████████████| 583 kB 3.3 MB/s
Collecting wheel
  Downloading wheel-0.36.2-py2.py3-none-any.whl (35 kB)
Installing collected packages: pip, setuptools, wheel
Successfully installed pip-20.3.4 setuptools-44.1.1 wheel-0.36.2

最终目的是装requests,搞定!

pip install requests

Collecting requests
  Downloading requests-2.25.1-py2.py3-none-any.whl (61 kB)
     |████████████████████████████████| 61 kB 249 kB/s
Collecting chardet<5,>=3.0.2
  Downloading chardet-4.0.0-py2.py3-none-any.whl (178 kB)
     |████████████████████████████████| 178 kB 613 kB/s
Collecting urllib3<1.27,>=1.21.1
  Downloading urllib3-1.26.4-py2.py3-none-any.whl (153 kB)
     |████████████████████████████████| 153 kB 2.5 MB/s
Collecting idna<3,>=2.5
  Downloading idna-2.10-py2.py3-none-any.whl (58 kB)
     |████████████████████████████████| 58 kB 2.2 MB/s
Collecting certifi>=2017.4.17
  Downloading certifi-2020.12.5-py2.py3-none-any.whl (147 kB)
     |████████████████████████████████| 147 kB 6.1 MB/s
Installing collected packages: chardet, urllib3, idna, certifi, requests
Successfully installed certifi-2020.12.5 chardet-4.0.0 idna-2.10 requests-2.25.1 urllib3-1.26.4

[W:pyppeteer.chromium_downloader] start chromium download. Download may take a few minutes.

urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='storage.googleapis.com', port=443): Max retries exceeded with url: /chromium-browser-snapshots/Win_x64/588429/chrome-win32.zip (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x000002225ACF2C50>: Failed to establish a new connection: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。',))

提示SSL错误
解决办法:
编辑 C:\Users\XXXX\AppData\Roaming\Python\Python36\site-packages\pyppeteer\chromium_downloader.py,把https://storage.googleapis.com改为http://storage.googleapis.com即可

Chromium路径C:\Users\XXXX\AppData\Local\pyppeteer\pyppeteer\local-chromium\588429\chrome-win32

[W:pyppeteer.chromium_downloader] start chromium download.
Download may take a few minutes.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████| 136913619/136913619 [00:13<00:00, 10093738.83it/s]
[W:pyppeteer.chromium_downloader]
chromium download done.
[W:pyppeteer.chromium_downloader] chromium extracted to: C:\Users\XXXX\AppData\Local\pyppeteer\pyppeteer\local-chromium\588429

PVE(Proxmox VE)快照和备份有什么区别?

备份

可以理解为克隆,备份文件之间是完整且独立的,Proxmox VE 备份始终是完整备份-包含VM / CT配置和所有数据,占用空间较大。备份后可以删除虚拟机,然后从备份文件恢复虚拟机,[备份👉快照模式] 只是虚拟机备份模式中的一种,以最小的不一致风险为代价,提供了最低的操作停机时间。它通过执行 Proxmox VE 实时备份来工作,该备份在VM运行时复制数据块。

快照

快照的数据(存储开销)是基于上一次快照的数据变化部分,而不是像备份那样复制一份完整虚拟机生存数据,占用空间较小,不能通过快照恢复被删除的虚拟机,快照不能脱离原始虚拟机运行,还原快照也就是把虚拟机从”创建快照时的状态(包括RAM数据)“还原到创建快照的时候,类似“时间机器”。

建议在为运行中的VM拍摄快照时包括RAM或使用QEMU Guest Agent,以避免不一致。

时间机器:如果备份磁盘已满,则最早的备份会被删除。

首次备份可能需要很长时间,只会备份自上次备份以来有变动的文件,因此将来的备份速度会加快。

https://support.apple.com/zh-cn/HT201250

Dism++安装镜像提示:指定缓冲区中包含类型错误的数据,怎么办?

使用 WIndows 安装器WinNTSetup安装同样报错“应用系统映像失败!指定的缓冲区中包含类型错误的数据。”

常见问题

问: Dism++安装镜像提示:指定缓冲区中包含类型错误的数据,怎么办?

答: 下载的系统镜像文件不完整,请重新下载。

问: 系统镜像的MD5值是正确的,但还是提示
指定缓冲区中包含类型错误的数据 

答: 硬盘问题,逻辑坏道或者物理坏道导致的。更换硬盘,重新下载文件解决。

问: C盘格式化了,但是镜像无法安装,出现错误,本地已经没有其他系统镜像了,也没有第二台电脑,怎么办?

答: 可以去就近网吧重新下载镜像,记得校验系统镜像。

问: 开机提示BOOTMGR is missing / NTLTR is missing,怎么办?

答: 系统引导丢失,进入PE后使用DISM++修复系统引导即可。

问: 装系统时强制关机,然后开机后黑屏无信号,确定显卡插槽视频线都是好的,怎么办?

答: 尝试将机器完全断电,扣掉主板上的CMOS电池,等待十秒钟后再装回,然后开机即可。

让 JVM 抛出一个 OutOfMemoryError 内存溢出错误

本机内存溢出

DirectMemory容量可以通过-XX:MaxDirectMemorySize指定。

import java.lang.reflect.Field;
import sun.misc.Unsafe;

public classDirectMemoryOOM {
    private static final int _1MB = 1024 * 1024;

    public static void main(String[] args) throws IllegalArgumentException,
            IllegalAccessException {
        Field unsafeField = Unsafe.class.getDeclaredFields()[0];
        unsafeField.setAccessible(true);
        Unsafe unsafe = (Unsafe) unsafeField.get(null);

        while (true) {
            try {
                unsafe.allocateMemory(_1MB);
            } catch (OutOfMemoryError er) {
                System.out.println(er.toString());
                System.exit(0);
            }
        }
    }
}

// java.lang.OutOfMemoryError

为什么有时不声明 throws 也可以编译通过

RuntimeException不需要强制对其进行声明和捕获。可以认为Checked exception就是要强制程序员去处理这个异常(不管你throws多少层,终归要在某个地方catch),而Runtime exception则没有这个限制,可以自由选择是否catch

// 定义的是一个必检异常
class HexFormatException extends Exception { }

// 定义的是一个运行时异常
class BinaryFormatException extends NumberFormatException {}

NumberFormatException extends IllegalArgumentException

IllegalArgumentException extends RuntimeException