最近发现站点经常无法打开,以往都是直接重启服务器,偷懒省事。后来无意间在控制台登录,发现原来是 mysql 的内存占用过大,导致 out of memory,被系统杀掉了进程。
按道理来说,一个小破站,真的需要那么大的内存占用么,而且这么多年来大部分时间都没有问题,也不清楚具体是从什么时候开始有这个问题了。
按照网上的教程,结合服务器上的配置。
cd /etc/mysql/mysql.conf.d
修改 mysqld.cnf 这个文件,添加或者更新一条配置
innodb_buffer_pool_size = 100M
大家结合自己的实际情况来修改吧,这个默认值看起来是 128M。
网上还有更新下面的配置,我没有设置,先跑跑看。
# 设置最大连接数
max_connections = 100
# 设置线程缓存大小
thread_cache_size = 16M
# 设置每个连接最大的查询缓存大小
query_cache_size = 64M
不要忘记 sudo service mysql restart
先前一直用的是 TeamViewer 来作为远程访问工具,在过去的几年里,远程看 bug,确实方便了很多。后面因为不可描述的原因不能再续费了,而 TeamViewer 免费版本除了限制商业使用外,又限制了登录的机器数量,直接无法使用,只好转而看看其它替补版本。
像出现了很久的向日葵,还有后面的 ToDesk,AnyDesk,一直都有在关注中,但是这些吧,怎么说呢,在某些方面不是很贴切自己的使用需求。观察了很长时间,最后还是选择了 RustDesk。
RustDesk,首先是免费开源,而且支持自部署,就非常有吸引力了。同其它远程工具一样,官方有提供免费的连接,网速不见得总是可以满足要求。再加上前段时间国内一些**们利用这个工具来诈骗的恶意行为,导致限制的更加严格,所以使用自有服务器来中转流量就非常有必要了。
软件使用起来非常简单,和其他软件大同小异,输入对方的数字编号和对应的密码,就可以使用了。默认情况下,软件是以非管理员权限运行的,同时也禁止远程修改配置。对于自己个人使用,可以选择安装以系统服务的方式运行,这样就进一步去掉了限制。
因为某种原因,只能以非安装的方式运行,但是在远程机器锁屏后,就无法登录,哪怕 RustDesk 是以管理员权限启动的。
检索了一下,可以通过修改组策略的方式来解决:
1,运行 gpedit.msc 打开组策略管理器
2,计算机配置->Windows设置->安全设置->本地策略->安全选项->用户帐户控制:提示提示时切换到安全桌面,选择关闭这个选项就可以了。
衣服自己洗这里没有验证这个改动会有什么后果,字面看起来应该是一个全局的影响,大概率其它远程工具也会受到影响,不过个人使用无所谓了。
验证了一下,在非安装的方式的场景下,锁屏后可以正常地远程登录了。大家记得开启隐私模式喔,不然远程电脑的屏幕是会实时显示操作的,略微有些尴尬。
即使已经登录了,如果打开文件传输功能,还是需要再次输入密码,这个不是太方便,不如 TeamViewer,吐槽一下。
最近发现安卓手机在通过 USB 数据线连上了电脑后,发现只有充电,但是电脑无法识别到设备,这就很影响 USB 调试程序。
一直没有搞清楚怎么回事,都是反复尝试,或者重启手机,有的时候还是有效果的,反正平日一直都是插上去不拔的,而且也不是总有这个问题,概率性的。于是在将就用着。
只是今天发现无论如何都无法识别到手机,确认系统的开发者模式和调试模式都有打开,而且手机上也反复提示请检查数据线。要知道这可是原装的数据线,怎么可能有问题。
无意间随手把鼠标的无线接头和这个数据线互换了下位置,发现鼠标没有作用了。顿感不妙,感情是这个USB接口有问题?
问题是我的电脑就只有这2个USB接口,其它的是 type-C 接口,以后还要用个 type-C 和 USB 的转接头,想想都尴尬的慌。
过了几个小时,还是不死心,于是就网上各种搜索,但是很多帖子都没有太大的意义,我同时也很确定驱动是没有问题的。
但是有几个帖子提到了电源管理的问题,本来是不信想放弃的,寻思着如果这个没有效果就不再尝试了。
打开设备管理器,找到 “USB Root Hub”节点,选择“属性”->“电源管理”,取消“允许计算机关闭此设备以节约电源”
衣服自己洗这里需要提醒各位的是,在设备管理器里可能存在多个相同的节点,所以要准确找到那个 USB 接口对应的设备。我为了找到这个设备,第一次禁用的就是无线鼠标的那个USB接口,鼠标马上就不能用了,只好重启了一次电脑。
取消勾选后,手机就正常弹出USB调试授权提示了,也不会有数据线不匹配的提示了。
再复盘回忆,衣服自己洗突然想起来,应该是去办公室开会,然后电池没有电了,电源管理软件自动跳转了系统设置,导致这个 USB 接口只输出少量电量。这也是手机总提示数据线不匹配的问题,而鼠标接口没有问题,是因为在开会时,一直有用鼠标,所以这个设备节点不会主动调整。而前面提及的概率性的,是因为去会议室开会,如果没有带电源线而恰好电量不足时才会有这个问题。
前后都对的上,我真是个大聪明。
由于某些原因,安装了火绒6.0,但是在某一天无意间发现自己的网站SSL证书颁发者居然是火绒,导致无法判断自己的证书过期时间等。网上搜索了下,貌似卡巴斯基也提供了类似的机制。
对于普通的用户来说,这个功能算是不错,但对自己的网站来说,显得有点画蛇添足了。
于是检索如何恢复原状,最后发现是火绒提供的 web 扫描导致的。
关闭方式:病毒防护-》Web扫描-》设置-》加密连接扫描,把这个选项给关闭就可以了。
如果大家不想关闭,可以把排除的网站添加到设置页面下方的那个“网站列表”里。
llama3 确实不错,但是大家都说其对中文支持的不够好,所以网上有人基于 llama3 进行了微调,并提供了下载地址:https://huggingface.co/zhouzr/Llama3-8B-Chinese-Chat-GGUF/tree/main
大家根据自己的机器性能按需下载,比如 q4_k_m 什么的,简单地讲,体积越大对硬件的要求越高。
再下载回来后,要如何导入,以前不是太了解,而且官网又是英文的说明。
幸运地是,有找到一个中文示例。
首先,我们可以打开命令行,看看官方的 llama3,输入命令
ollama show --modelfile llama3
屏幕上会打印一堆的信息,我们给拷贝出关键的数据如下:
FROM C:\Users\Administrator\.ollama\models\blobs\sha256-00e1317cbf74d901080d7100f57580ba8dd8de57203072dc6f668324ba545f29
TEMPLATE "{{ if .System }}<|start_header_id|>system<|end_header_id|>
{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>
{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>
{{ .Response }}<|eot_id|>"
PARAMETER stop <|start_header_id|>
PARAMETER stop <|end_header_id|>
PARAMETER stop <|eot_id|>
PARAMETER stop <|reserved_special_token
需要提醒的是,第一行里需要修改为你下载的模型的实际路径,不要搞忘记了。然后保存这个 modelfile。
第二步呢,就是把这个 modelfile 给导入到 ollama 里,运行下面的命令:
ollama create llama3-Chinese:8B -f Modelfile
还是一样的,修改上面的模型名字,以及保存的 modelfile 实际路径。
不出意外的话,就会显示成功字样。
第三步,我们来再次确认下,是否导入成功了。输入下面的命令:
ollama list
如果看到了刚才的模型名称,就表示 OK 了。
正所谓“会者不难”,一看就非常简单。
唯一不太爽的就是,这些模型都太占磁盘空间了。期待 P 级存储早日白菜价。
对于电脑上的图片预览工具,看了这么多,还是 Google 家的 Picasa 是最好用的,可惜的是停止开发了。幸运的是,有好心人提供了 Picasa 3.9.136.9 提取版,移除了图片管理等无关的功能,只保留了图片预览。
所以这么多年来,这个工具一直很好用。
最近在一个测试机器上安装时,软件报告 Error launching installer 错误。从提示来看,这个提取版使用的是 NSIS 来打包的。
一开始,以为是语言包的问题,为系统添加了中文语言包后,发现无效。
接着寻思,是不是因为时间过于久远,需要 C++ 运行时,然后吧啦吧啦一顿安装,发现还是无效。
后来在网上无意间发现有个帖子说,出现这个错误,可能需要重启电脑。突然想起来,确实在几天前安装了某个软件,当时提示要重启系统,直接给忽略了。
果然,重启系统后,Picasa 提取版可以顺利安装了。
[2024/9/20] 补充
今天在安装了 tiny11 的新机器上又碰到了这个问题,重启后发现没有效果。经过搜索,网上的说法还是和语言有关系,安装包不能包含 unicode 类型的字符,稳妥的做法是:1、将安装包重命名,只包含英文字母。2、将安装包移动到纯字母的路径下后再运行。
虽然界面看起来怪怪的,但是终于可以安装了。
网上搜索了下,有2种方式。
一、直接执行系统自带的程序 DisplaySwitch.exe,它在 windows\system32 目录下。对应的 C# 代码如下:
using (var proc = new Process())
{
proc.StartInfo.FileName = @"DisplaySwitch.exe";
proc.StartInfo.Arguments = "/external";
proc.Start();
}
二、调用系统 API SetDisplayConfig 函数
private const uint SDC_APPLY = 0x00000080;
private const uint SDC_TOPOLOGY_INTERNAL = 0x00000001;
private const uint SDC_TOPOLOGY_CLONE = 0x00000002;
private const uint SDC_TOPOLOGY_EXTERNAL = 0x00000008;
private const uint SDC_TOPOLOGY_EXTEND = 0x00000004;
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern long SetDisplayConfig(uint numPathArrayElements, IntPtr pathArray, uint numModeArrayElements,IntPtr modeArray, uint flags);
/// /// 设置屏幕的显示模式 ///
/// 模式(0 - 主屏 1 - 双屏复制 2 - 双屏扩展 3 - 第二屏幕
///
public void SetScreenMode(int type)
{
uint mode;
switch (type)
{
case 0:
mode = SDC_APPLY | SDC_TOPOLOGY_INTERNAL;
break;
case 1:
mode = SDC_APPLY | SDC_TOPOLOGY_CLONE;
break;
case 2:
mode = SDC_APPLY | SDC_TOPOLOGY_EXTEND;
break;
case 3:
mode = SDC_APPLY | SDC_TOPOLOGY_EXTERNAL;
break;
default:
mode = SDC_APPLY | SDC_TOPOLOGY_INTERNAL;
break;
}
SetDisplayConfig(0, IntPtr.Zero, 0, IntPtr.Zero, mode);
}
对于过去的 cmd 命令行,可以使用 set ABC=xxx 来设置环境变量。
然后使用 echo ABC 来打印其值。
对于新的 power shell 命令行,就需要更换写法了,$Env:ABC=xxx
如果要打印,就直接使用 $Env:ABC 就可以了。
需要强调的一句是,这些都是在当前命令行上下文临时使用的,一旦关闭了,这些环境变量就不存在了。有利有弊,看需求。例如我自己就是用来设置代理下载第三方库或者依赖包,非常方便。
要说啊还真是只有魔法才可以打败魔法。测试机上的 McAfee 软件要卸载,通过控制面板里的添加删除程序结果自卸载失败,而且是每次都失败,占用着磁盘空间。
经过一番搜索,发现了来自官方的 MCPR 卸载工具,可以完整地卸载。
下载地址是: https://download.mcafee.com/molbin/iss-loc/SupportTools/MCPR/MCPR.exe
运行后会提示输入验证码,以防止误操作。之后就需要耐心等一等了,直到给出提示说卸载成功。老实讲,比我预期的时间还要长一些。