Simon MY - Yu Ma
type: channel
link: https://www.antergone.com/author/1/
description: Yu Ma
items: 使用Cloudflare免费加速豆瓣图书封面
items: 使用Vercel反向代理Google PaLM(Gemini) API
items: 【转】北疆环线旅游攻略
items: 使用阿里云函数计算反向代理OpenAI服务
items: 阿里云函数计算FC部署Jrebel Licence Server
items: 自建Jrebel Licence Server分享
items: 自用资源站点分享
items: 如何获得 Warp+ 的大容量套餐
items: 如何在Macbook上使用Cloudflare Warp的Proxy模式
items: 解决阿里云低配服务器进程killed问题

使用Cloudflare免费加速豆瓣图书封面
type: item
date: 2024-07-07T00:00:00+08:00
description: 大概是3月份吧，我突然想回顾一下23年一年读过的书，以及记录24年我正在读书。我个人也不太会写前端，所以就用ChatGPT给我生成了一个简单、朴素的书架页面 https://simonmy.com/books.html 制作这个页面的过程很快，但是图书封面的问题让我很头大。如果是直接配置豆瓣的地址，大概率是被拦截的。我自己从豆瓣抓下来，然后传图床再加到页面也很麻烦，所就有了这个简单的小工具。原理实用一张简单的流程图说清楚所有的逻辑利用Cache快速检查之前是否做过图片转存加速如果命中了Cache，直接读取R2中的图片，返回用户如果没有命中Cache 3.1 利用豆瓣API把图片抓取下来，上传到R2 3.2 更新Cache，以便于后续命中 3.3 读取R2中的图片，返回用户准备工作一个Cloudflare账号，没有的自己注册一个托管在 Cloudflare的域名 (建议有，不强制)关键步骤创建存储这一步没什么要注意的，只要名字符合规范就好。创建R2的时候，可以选择亚太区，速度理论上会快一些创建R2 创建KV创建Worker这一步是最重要的一步，先到自己账户的 Worker&Pages 页面并创建一个Worke。创建的时候注意不是Pages，Worker的名字自己看着来，使用默认的Hello World模板部署即可。创建成功之后不要急着贴代码，按照以下步骤来可以少走弯路~第一步：绑定R2和KV回到自己账户的 Worker&Pages 页面，进入刚才自己创建的Worker，选择 Setting - Variables。找到 KV Namespace Bindings 添加变量名为 DOUBAN_KV, 对应的值选择上一步你创建的KV的名字找到R2 Bucket Bindings 添加变量名为 DOUBAN_R2, 对应的值选择上一步你创建的R2的名字[scode type="blue"]这里Cloudflare前端显示有问题，下划线是显示不出来的，贴上去保存即可[/scode]第二步：贴代码回到自己账户的 Worker&Pages 页面，进入刚才自己创建的Worker， 进入右上角的 Edit Code(编辑代码)将下面的代码粘贴到Worker内的worker.js，部署即可。const DOUBAN_API_HOST = 'frodo.douban.com'; const DOUBAN_API_KEY = '0ac44ae016490db2204ce0a042db2916'; const requestOptions = { headers: { // host: DOUBAN_API_HOST, authorization: '', 'user-agent': 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 15_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.16(0x18001023) NetType/WIFI Language/zh_CN', referer: 'https://servicewechat.com/wx2f9b06c1de1ccfca/84/page-frame.html', 'cache-control': 'no-store' }, cf: { cacheTtl: 0, scrapeShield: false, cacheEverything: false } }; async function fetchSubject({type, id }) { const url = `https://${DOUBAN_API_HOST}/api/v2/${type}/${id}`; const params = new URLSearchParams({ apiKey: DOUBAN_API_KEY }); return fetch(url + '?' + params.toString(), requestOptions); } async function fetchCover({ type, id, cache, bucket }) { const fileCacheKey = 'file_' + type + '_' + id; const fileBucketKey = 'cover/' + type + '/' + id + '.jpg' const fileCacheValue = await cache.get(fileCacheKey); if(fileCacheValue) { const object = aw…

使用Vercel反向代理Google PaLM(Gemini) API
type: item
date: 2023-12-18T12:20:00+08:00
description: Google 这些天开放了Gemini Pro的 API Token申请通道， 并且免费开放给开发者使用。根据谷歌官网价格显示，免费版本每秒最多可支持60次API访问，足以满足个人学习使用。Gemini API Token申请地址Google AI Studio: https://makersuite.google.com/app/apikey Gemini首页: https://ai.google.dev 具体的申请步骤这里不敖述，如果大家不太会，可以留言，专门开个文章来写。部署由于Google PaLM API仅允许美国使用，我国境内是无法直接使用的，因此解决方案与OpenAI类似，使用Vercel Edge进行反向代理。开源地址：antergone/palm-proxy点击 Vercel 按钮即可一键部署用法(样例)Google原生API：curl \ -H 'Content-Type: application/json' \ -d '{ "prompt": { "text": "Write a story about a magic backpack"} }' \ "https://generativelanguage.googleapis.com/v1beta3/models/text-bison-001:generateText?key={YOUR_KEY}"替换Vercel域名或自定义域名:curl \ -H 'Content-Type: application/json' \ -d '{ "prompt": { "text": "Write a story about a magic backpack"} }' \ "https://{YOUR_DOMAIN}/v1beta3/models/text-bison-001:generateText?key={YOUR_KEY}"参考文档Google Gemini API Doc: https://ai.google.dev/docs Google Gemini API Price: https://ai.google.dev/pricing Vercel Edge Functions API: https://vercel.com/docs/functions/edge-functions/edge-functions-api OpenAI Proxy: https://github.com/egoist/openai-proxy

【转】北疆环线旅游攻略
type: item
date: 2023-12-07T00:00:00+08:00
description: 1.综述1.1.总览新疆的旅游环线包括多个路线版本，人们常说去北疆看景色，去南疆看人文。本人去新疆是9月底，正值喀纳斯的秋景最好看的时间，因此本文根据我的行程总结介绍北疆环线的相关旅游攻略。北疆大环线，一般指天山往北的喀纳斯环线+伊犁环线。核心看点是喀纳斯景区的秋景以及伊犁环线的草原风景。因此，9月底是喀纳斯景区赏秋的好时间，而6-8月则是伊犁草原最好看的时候（9月仍可以在那拉提的空中草原欣赏到极致的草原景色）。主要景点包括：S21沙漠公路、五彩滩（彩色丘陵与落日）、喀纳斯（包括喀纳斯景区、白哈巴、禾木村）、赛里木湖、独库公路（北段及中段）、巴音布鲁克（九曲十八湾赏落日）、那拉提景区、乌鲁木齐城市景点等。另外，有些景点因为时间原因和个人喜好做了舍弃，如可可托海、天山天池、魔鬼城、夏塔古道、独山子大峡谷。另外还有一些小众景点，如北疆白沙湖、八卦城都可以根据自己的喜好进行选择。后续的内容中将会对核心看点和主要景点做详细的讲解。整个北疆大环线路程约2800KM，可以选择跟团游，也可以选择飞乌鲁木齐后落地租车自驾。本文攻略则是按自驾自由行来描述的。整个环线自驾下来约10天左右，大家可以根据各自时间做景点取舍及相应的调整。1.2.特别注意注意：伊犁环线中的独库公路，因为有固定的开放时间，六月至十月中旬开放，中间也会因为天气原因临时关闭。所以如果想玩伊犁环线的话，最好选择在独库公路开放的时间去新建北疆旅游。具体原因下文中会有介绍。1.3.准备工作身份证、驾照、现金零钱（以防有时候手机没网络）、充气枕头（长途坐飞机睡觉使用）。这些其实不是重点，重点是下面两个：衣物，新疆昼夜温差大，9月下旬去真正体会到了一年四季，因此夏装、春秋装、甚至冬装都视情况带上。我9月下旬带了毛衣和厚羽绒服，遇到下雪天还是冷。无人机，新疆北疆的景色真的很好看，而从高空俯视有更加震撼的美感。因为之前没有玩过无人机，怕租无人机不会用或搞坏掉，所以这次去新疆没有准备无人机。结果手机拍出来的照片和别人用无人机拍出来的照片差距很大。所以有条件真的建议准备一台无人机。如果之前没有的话，淘宝或一些城市实体店就可以租，听在景区使用无人机的大哥说，使用上手会很简单。1.4.总体行程以下是我的行程路线。天数日期行程类别备注day09月22日南京-乌鲁木齐地窝堡机场飞机✈️ 租车取车租车?提前联系遇到，机场送车 宿乌鲁木齐住宿? day19月23日乌鲁木齐-布尔津-五彩滩开车?509km，6h30min，123元高速费 S21沙漠公路-阿乌高速(古尔班通古特沙漠)五彩滩日落景点⛰门票45元，彩色丘陵，落日 宿布尔津住宿?也可以提前赶赶路住贾登峪，第二天留有充足时间玩喀纳斯 day29月24日布尔津-喀纳斯开车?120km，2h30min喀纳斯景区景点⛰如果第二天抢不到去禾木的门票，则可以通过从喀纳斯景区渠道白哈巴，则买二进票。一进门票+区间车230元，二进门票+区间车270元。 优先爬观鱼台，再逛三湾(卧龙湾、月亮湾、神仙湾) 宿贾登峪住宿? day39月25日贾登峪-禾木特殊14点往禾木门票站停车场满了，就可以自驾进禾木景区了 （如果没放行自驾，则当日行程取消，去白哈巴）禾木游玩景点⛰白桦林、美丽峰、观景台、看日落、喂鹰 选择1：宿禾木住宿?如果禾木村住宿不贵，或可以订到，可以住禾木村，第二天早上看落日。否则连夜返回布尔津 选择2：禾木-布尔津开车?154km，3h，33元高速费 选择2：宿布尔津住宿? day49月26日布尔津-奎屯开车?460km，5h30min，131元高速费乌尔禾胡杨林景点⛰可选，不去南疆看胡杨林则可以看下这边的胡杨林，本人实际没有进去 魔鬼城景点⛰可选，如果看过青甘大环线的魔鬼城，这边可以跳过 宿奎屯住宿? day59月27日奎屯-巴音布鲁克镇开车?256km，6h，独库公路北段+中段，出发前在独山子加好油。不要赶时间，好好欣赏路上的风景乔尔玛服务区服务区?独库公路的中心点，服务区，有烈士纪念馆，几年因修独库公路牺牲的168名官兵战士 独山子大峡谷景点⛰ 巴音布鲁克大草原景点⛰门票+区间车140元，观光车20元夏天20点日落，需要赶在18.30分前到达游客服务中心。九曲十八弯看落日 宿巴音布鲁克镇住宿? day69月28日巴音布鲁克镇-那拉提景区东门开车?65km，1h30min，再走一次独库公路中段。那拉提自驾景点⛰自驾票200元每人，提早在小程序预约自驾订票从东门延河谷草原自驾至游客中心、中途可以自驾盘龙谷道。而后从游客中心处往南走空中草原路线 宿那拉提镇 day79月29日那拉提镇-乔尔玛-唐布拉草原-尼勒克县-伊宁市开车?这一天是可选路线，走这条路线可以欣赏下不亚于那拉提景区草原的唐布拉草原。当天也可以根据自己的喜好，选择去琼库什台大草原因为那拉提自驾票…

使用阿里云函数计算反向代理OpenAI服务
type: item
date: 2023-11-17T01:17:26+08:00
description: 本文的主要思路是使用阿里云的函数计算服务来代理 OpenAI 的 API 地址，配合自己的域名即可在境内实现访问。至于是不是永久免费，我不知道。但是每个人都有点免费额度，个人做技术探究应该是够用了。前期准备需要一个阿里云账号， 没有账号的可自行注册( 点击此处注册 )需要一个自己注册的域名， 没有的可以注册 ( 点击注册域名 )创建代理服务1. 登录并开通函数计算服务登录地址：https://fcnext.console.aliyun.com/overview2. 通过模板创建Nginx应用这是整个过程中最重要的一步！首先在函数计算管理的应用面板，找到创建应用。选择 通过模板创建应用， 在搜索框输入 Nginx ，找到对应模板 立即创建填写一些服务关键信息。 这里要注意一下几个点选择 直接部署区域选择可以访问OpenAI的区域，例如：日本、美国、新加坡等函数名、角色等信息不要修改3 Nginx配置修改在函数及服务 面板中，找到刚创建的服务，点击进入 Nginx 选择函数代码，并进行编辑，仅修改 nginx.conf 即可， 代码全文如下:# nginx -c /code/nginx.conf -g 'daemon off;' events { worker_connections 1024; } http { server { error_log /dev/stderr; access_log /dev/stdout; gzip on; gzip_min_length 1k; gzip_comp_level 2; gzip_types text/html text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png image/svg+xml; gzip_vary on; gzip_disable "MSIE [1-6]\."; include /etc/nginx/mime.types; add_header Access-Control-Allow-Origin *; proxy_set_header Host api.openai.com; proxy_http_version 1.1; proxy_set_header Host $host; listen 9000; location ~* ^\/v1\/((engines\/.+\/)?(?:chat\/completions|completions|edits|moderations|answers|embeddings))$ { proxy_pass https://api.openai.com; proxy_set_header Connection ''; proxy_read_timeout 8m; proxy_ignore_headers Cache-Control; client_body_buffer_size 4m; proxy_ssl_server_name on; proxy_ssl_session_reuse off; } location /v1 { proxy_pass https://api.openai.com; proxy_ssl_server_name on; proxy_ssl_session_reuse off; } } }别忘了部署代码4 域名绑定由于阿里云提供的默认公网访问地址是不能进行函数服务的，我们需要配置自己的域名。通过函数计算面板，找到域名管理页面，并进入添加自定义域名注意以下标出的几个重要信息域名输入后，先去解析 CNAME，如果没有解析，最终是无法提交的。 这一步不会做，自己去搜索引擎学习路由配置路径如图使用 /*服务名称： 即为刚才创建的服务函数名: nginx版本: LATEST强烈建议配置HTTPS如果你已经有了，可以上传。如果没有，直接使用免费的HTTPS申请教程: 点击学习详细的配置文档：https://help.aliyun.com/zh/fc/user-guide/configure-a-custom-domain-name其他操作Nginx服务资源调整(非必须)由于模板考虑到的是通用性，所以Nginx的资源申请的比较大。对于反向代理Open AI服务来说，就是大材小用、资源浪费了，我们还是能省则省。从函数计算面板，找到服务及函数，找到Nginx服务，点击函数名进入将Nginx调整为：0.1核, 128MB即可， 其他参数不要去修改不要忘记保存写在最后之…

阿里云函数计算FC部署Jrebel Licence Server
type: item
date: 2023-09-14T19:26:00+08:00
description: 前面分享了自建的 Jrebel License Server，这一篇就来讲讲是如何搭建起来的。顺带记录一下如何去搞一个自建的Licence Server。为了赶上技术潮流，积极体验一下Serverless(其实就是穷，买不起服务器)， 将服务放在了阿里云的函数计算FC服务内。恰好很久没搞逆向技术了，抽时间试了试水，结合开源相关文章，就搞了个注册机。本文内容仅供技术研究，请支持正版!插件激活的 奥秘其实这个插件的Licence Server原理比较简单，需要提供以下5个HTTP接口用于客户端激活，还需要1个PKCS8​私钥用于报文签名，签名算法使用：RSASSA-PKCS1-V1_5-SIGN​​/jrebel/validate-connection​​/agent/leases/1​​/jrebel/leases/1​​/jrebel/leases​​/agent/leases​上述源码的可以通过 https://simonmy.com/posts/%E9%98%BF%E9%87%8C%E4%BA%91%E5%87%BD%E6%95%B0%E8%AE%A1%E7%AE%97fc%E9%83%A8%E7%BD%B2jrebel-licence-server.html 进行留言获取。证书这里就公开了，自己在搜索引擎搜索即可。搜索关键字: ​H2ulzLlh7E0=​使用阿里云函数计算FC部署在登录阿里云平台，并开通函数计算服务: https://fcnext.console.aliyun.com/overview在最上方切换到期望的Region， 这里推荐 中国香港​， 后续绑定自定义域名，可以无需备案。构建Licence Server代码并按照命名规范压缩创建一个服务，命名自定义即可，日志不做要求创建一个函数，命名自定义即可，注意创建时下图红框标注位置的参数​高级配置中，vCPU选择0.15核就够用了，内存选择 256MB即可触发器相关配置，使用默认就好上传代码文件，创建函数即可。添加一个自定义域名。打开函数计算高级功能内的域名管理，填写好域名和路由配置，注意要先去自己的域名DNS解析供应商进行CNAME解析(图中红线部分)​​创建成功后就可以使用自定义域名进行访问了其他有关插件安装和激活的文章移步：https://simonmy.com/posts/%E8%87%AA%E5%BB%BAjrebel-licence-server%E5%88%86%E4%BA%AB.html‍‍‍

自建Jrebel Licence Server分享
type: item
date: 2023-09-14T19:24:43+08:00
description: 最近开发调试，本地频繁重启。由于项目笨重，启动一次基本上就需要 3 -5 分钟。针对此类问题，急需要要给能帮助热部署的插件，此时此刻就就想起了Jrebel​。以IDEA为例 - 安装插件在插件市场输入关键字 Jrebel​进行搜索。并按照提示进行重启 IDEA!​​‍激活插件打开IDEA，进入JRebel的配置，直接点击 active now​ 链接进入到激活界面在激活窗口中，我们需要填入license​的地址和邮箱，其中邮箱随便填写。 license​的地址为：https://jrebel.simonmy.com/{UUID} ，其中{UUID}​ 可以通过 在线获取UUID 去生成一个填入license中。例如： https://jrebel.simonmy.com/15242afc-fea0-472c-a1df-de8e69d2c973​填写完成后，勾选同意agreement​，最后点击 Activate JRebel​​​看到如下样例，就是激活成功了，大家就可以愉快的使用了​​此Licence Server是在线服务，可以长期在线使用。‍‍

自用资源站点分享
type: item
date: 2023-08-28T15:00:00+08:00
description: 背景近期很多朋友都来问我，Mackw和RARBG关闭之后我都去哪里下载资源？针对视频需求来说，其实绝大部分国内的视频网站都是有会员的。只有极少数的情况，我会去资源站下载视频。针对软件需求来说，我本身是一个程序员，绝大部分时间都是在Mac环境下和IDE打交道，没有什么特别的诉求。下文中分享的都是我个人认为比较好用的资源站点视频类不太灵影视 https://www.2bt0.com/YTS.MX https://yts.mx/1337x https://1337x.to/TorrentGalaxy https://tgx.rs/软件类我常用的JetBrains系列都是公司的正版授权，其他的软件35%付费+60%开源+5%破解。Mac软件之家 https://www.macapp.so/Xclient https://xclient.info/电子书易书 https://search.yibook.org/Zlibrary Searcher https://zlib.knat.network/ 配合ipfs checker ( https://ipfs.github.io/public-gateway-checker/ )使用在线观影星视界 https://www.histar.tv/原一帆视频、iFun、多瑙 https://www.iyf.tv/

如何获得 Warp+ 的大容量套餐
type: item
date: 2023-04-18T19:29:00+08:00
description: 如果你还不知道什么是 Cloudflare Warp，建议先看看产品官网（https://1.1.1.1/ ）。中文简介也可以看看知乎的文章（https://zhuanlan.zhihu.com/p/352792129 ）[scode type="red"]本文不讨论 Warp 的实现原理，请读者不要过度解读。请合法合规的使用 Cloudflare Warp 的功能。[/scode]方法一：付费购买用土耳其区 Apple ID 直接付费，每月 10 try，每年 42 人民币。方法二：注册Cloudflare并加入ZeroTrust获得 ZeroTrust 版本的 Warp+，免费。参考连接：https://github.com/getsomecat/GetSomeCats/blob/Surge/注册Cloudflare并加入ZeroTrust教程.md方法三：分享连接和用脚本刷用普通的 iOS 1.1.1.1 App 分享链接邀请用户，获得一定容量奖励。直接打开网站，在线运行脚本：https://replit.com/@wdm1732418365/warp点击小三角开始 run 运行，然后输入你的 warp ID。Tips: 注意这里的warp ID不是你的account key，是设备ID手机客户端，点击右上角菜单图标，选择 Advanced，选择 Diagnostics，复制 ID电脑客户端，在客户端偏好设置，找到设备ID当然，也可以自己服务器或者本地跑脚本，脚本见附件。方法四：通过Warp+ Bot 生成机器人连接：https://t.me/generatewarpplusbot附件：刷流量脚本import urllib.request import json import datetime import random import string import time import os import sys os.system("title WARP-PLUS-CLOUDFLARE By ALIILAPRO") os.system('cls' if os.name == 'nt' else 'clear') print('Getting WARP+ Traffic on Github Actions') referrer = os.environ["DEVICEID"] def genString(stringLength): try: letters = string.ascii_letters + string.digits return ''.join(random.choice(letters) for i in range(stringLength)) except Exception as error: print(error) def digitString(stringLength): try: digit = string.digits return ''.join((random.choice(digit) for i in range(stringLength))) except Exception as error: print(error) url = f'https://api.cloudflareclient.com/v0a{digitString(3)}/reg' def run(): try: install_id = genString(22) body = {"key": "{}=".format(genString(43)), "install_id": install_id, "fcm_token": "{}:APA91b{}".format(install_id, genString(134)), "referrer": referrer, "warp_enabled": False, "tos": datetime.datetime.now().isoformat()[:-3] + "+02:00", "type": "Android", "locale": "es_ES"} data = json.dumps(body).encode('utf8') headers = {'Content-Type': 'application/json; charset=UTF-8', 'Host': 'api.cloudflareclient.com', 'Connection': 'Keep-Alive', 'Accept-Encoding': 'gzip', 'User-Agent': 'okhttp/3.12.1' } req = urllib.request.Reques…

如何在Macbook上使用Cloudflare Warp的Proxy模式
type: item
date: 2023-04-18T18:23:00+08:00
description: 如果你还不知道什么是 Cloudflare Warp，建议先看看产品官网（https://1.1.1.1/ ）。中文简介也可以看看知乎的文章（https://zhuanlan.zhihu.com/p/352792129 ）[scode type="red"]本文不讨论 Warp 的实现原理，请读者不要过度解读。请合法合规的使用 Cloudflare Warp 的功能。[/scode]首先我们先要介绍的是 Cloudflare Warp 的几种模式，再来说说为什么要使用 Proxy 模式。Cloudflare 提供的 6 种模式warp: 连接远端服务器, 并使用 tun 进行全局代理doh: 仅开启 DNS over HTTPS 功能warp+doh: 开启 Warp 和 DOH 功能dot: 仅开启 DNS over TLS 功能warp+dot: 开启 Warp 和 DOT 功能proxy：连接远端服务器，并在本地开启代理端口如果不理解什么是DOH和DOT，参考 Cloudflare 的介绍：https://www.cloudflare.com/zh-cn/learning/dns/dns-over-tls/ ，也可以自行在互联网搜索其他资料，例如：DOH：https://zh.wikipedia.org/wiki/DNS_over_HTTPSDOT：https://zh.wikipedia.org/wiki/DNS_over_TLS为什么要开启 Cloudflare Warp 的 Proxy 模式Cloudflare Warp 官方 Mac 客户端提供了除 proxy模式 之外的五种模式。带有warp的三种模式，都是依托于 TUN 实现的全局代理。doh和dot又只解决了 DNS 安全问题。如果此时需要依托于规则进行流量分配，以上 5 种模式都无法满足。如果不理解什么是TUN, 参考这篇文章：https://www.sobyte.net/post/2022-04/tun-mode/Cloudflare Warp提供了Proxy模式，可以不启用全局模式，且在本地监听一个socks5端口。如何开启 Cloudflare Warp 的 Proxy 模式0x1 安装 Cloudflare Warp 客户端官方网址：https://1.1.1.1/自行下载安装0x2 用户配置并退出客户端0x3 检查配置# 进入warp安装目录，寻找warp-cli cd "/Applications/Cloudflare\ WARP.app/Contents/Resources" # 检查用户, 如果没有返回正确的信息，重新会客户端绑定key ./warp-cli account # 返回样例： Account type: Limited Device ID: <Device ID> Public key: <Public Key> Account ID: <Account ID> License: <Your License Key> Role: Child Quota: 23837317999965990 Premium Data: 238373180000000000x4 切换模式# 设置工作模式为Proxy ./warp-cli set-mode proxy # 设置Socks5工作端口， 默认为4000，自行修改 ./warp-cli set-proxy-port 4000 # 确认配置文件 cd "/Library/Application\ Support/Cloudflare" cat settings.json0x5 连接与断连# 通过命令行进行连接 ./warp-cli connect # 查看连接状态 ./warp-cli status # 断开连接 ./warp-cli disconnect0x6 查看本地代理端口监听情况# 注意 这里一定要用sudo来执行 sudo lsof -i :4000

解决阿里云低配服务器进程killed问题
type: item
date: 2023-04-15T02:37:41+08:00
description: 多年前因为一些原因，买了一个新加坡的低配服务器(ecs.t5-lc2m1.nano)。本来上面只是跑个 nginx 和脚本，近期需要弄点新东西，发现连 yum 都执行失败。问题表现这个问题困扰有一段时间了，具体表现为:# 执行yum命令被内核killed，例如： [root@iZt4nfkptd39wsnnpvwsvcZ ~]# yum update Killed分析既然进程是被 killed，那么直接找内核日志。# 执行命令，查看内核日志 [root@iZt4nfkptd39wsnnpvwsvcZ ~]# dmesg | egrep -i -B100 'killed process' # 可看到下面的返回Out of memory字样 [ 2067.387457] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/user.slice/user-0.slice/session-3.scope,task=yum,pid=106912,uid=0 [ 2067.387466] Out of memory: Killed process 106912 (yum) total-vm:704512kB, anon-rss:371016kB, file-rss:0kB, shmem-rss:0kB, UID:0 pgtables:1376kB oom_score_adj:0找到了问题原因，解决起来就比较简单。解决思路既然是内存问题，那么就粗暴的扩大内存。又由于这个机器没什么重要的东西，性能方面基本不考虑。所以可以考虑使用交换分区，并且调整系统对内存分配策略。但是交换分区并不是什么好办法，对磁盘压力比较大，很多命令都会假死卡住。只要你耐心等，还是能执行成功的，总比直接被 killed 要好点。方法一：扩大内存，调整内存分配策略# 注意：一下操作全部使用root用户 # 第一步，创建 1G 交换文件 [root@iZt4nfkptd39wsnnpvwsvcZ ~]# mkdir -p /opt/swapfile/ [root@iZt4nfkptd39wsnnpvwsvcZ ~]# dd if=/dev/zero of=/opt/swapfile/1GB.swap bs=1024 count=1048576 # 第二步，保护交换文件，禁止其他用户修改 [root@iZt4nfkptd39wsnnpvwsvcZ ~]# chown root:root /opt/swapfile/1GB.swap [root@iZt4nfkptd39wsnnpvwsvcZ ~]# chmod 0600 /opt/swapfile/1GB.swap # 第三步，将交换文件设置为交换分区 [root@iZt4nfkptd39wsnnpvwsvcZ ~]# mkswap /opt/swapfile/1GB.swap # 第四步，临时启用交换分区 [root@iZt4nfkptd39wsnnpvwsvcZ ~]# swapon /opt/swapfile/1GB.swap # 第五步，将交换写入分区表（持久化） [root@iZt4nfkptd39wsnnpvwsvcZ ~]# sudo cp /etc/fstab /etc/fstab.bak [root@iZt4nfkptd39wsnnpvwsvcZ ~]# echo '/opt/swapfile/1GB.swap none swap sw 0 0' | sudo tee -a /etc/fstab # 第六步，调整使用交换分区的策略和回收策略 # 宗旨：尽量使用内存，减少swap，同时，尽早flush到外存，早点释放内存给写cache使用。 [root@iZt4nfkptd39wsnnpvwsvcZ ~]# sudo sysctl vm.swappiness=10 [root@iZt4nfkptd39wsnnpvwsvcZ ~]# echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf [root@iZt4nfkptd39wsnnpvwsvcZ ~]# sudo sysctl vm.vfs_cache_pressure=50 [root@iZt4nfkptd39wsnnpvwsvcZ ~]# echo 'vm.vfs_cache_pressure=100' | sudo tee -a /etc/sysctl.conf # 第七步，调整系统内存分配策略 [root@iZt4nfkptd39wsnnpvwsvcZ ~]#…