终于把网站烦人的丢失登录状态的问题给干掉了 CAO 

这小博客自从套了cloudflare 的cdn 后我就一直觉得很奇怪,每次的登陆状态很不稳定,点一下按钮身份变成游客了,再刷新一下又变回来了。再刷新一下,又tmd 回去了。。。。

所以,每次写好文章后,都是习惯性的ctrl + c 保存一下,免得点击一下提交按钮直接让我重新登录了。千辛万苦码的字直接消失了。。。

至于原因,其实我大概已经猜到了,应该是CF 这边的ip 池的问题,每次随机策略分配过来的ip不固定,就导致了这样的人间惨剧。

今天正好有空就找一下代码块的位置,把它修复了。

如图(完全印证了我的想法):







保存退出,登录一下后台,拼命的狂按F5,嗯,不错,状态没掉。
[ ] ( 66 次浏览 ) 永久链接 ( 3 / 51 )
pecl 安装 swoole 后编译 swoole_async 提示找不到 php_swoole.h 头文件的坑 

swoole 这个扩展可以说是让php 焕发了第二春,打破了我对php 的一贯“慢”的看法。

有兴趣的朋友可以去swoole.com 看看文档,这里不赘述。

swoole 安装最原始的方法就是下载源码编译安装,和其他的php 扩展一样。不过,我现在越来越懒,比较喜欢通过 PEAR 安装扩展。 e.g. pecl install swoole

不过,从swoole 4.3.0 版本开始,开发团队对swoole 进行了切割,把异步组件的模块单独放入了一个项目 swoole_async.

毕竟我也知道,同步写法+协程 才是swoole 的核心。异步的模块用的人不多,毕竟不是每个人都习惯 nodejs 的 callback hell 写法的……

那么如果你在以后的版本上要使用到异步的组件的话,就得自己在格外安装一下 swoole_async module.

很遗憾的是,至少到目前为止,开发团队还没有把它提交到 PEAR 仓库,也就是说你只能下载源码,自己编译安装了。

这本来没啥,我就下载了,但是问题出现了,make 的时候提示找不到 "php_swoole.h" 头文件。

我仔细查看了相关目录,/usr/include/php/ext/swoole ,确实没有这个文件。

后来我才发现原因,因为我的swoole 是 通过 PEAR 安装和升级的。难道pecl 没有帮我自动安装相关的头文件?

我手动下载了swoole 的源码包,编译安装了一下,果然在我 make install 的时候已经告诉我 头相关的文件已经被写入了系统指定目录下面。

ldconfig -v,刷新LIB库.

再去 swoole_async 目录下尝试 make,果然这个错误消失了……

成功了编译出了 swoole_async.so 链接库。

我日,这就坑了,本来想省事,直接 PEAR 装,现在为了异步模块还得走回头路。PEAR 是tmd 真的坑!!!!
[ ] ( 76 次浏览 ) 永久链接 ( 3 / 55 )
关闭站点评论功能 (防垃圾机器人评论) 

我这个小博客一直有垃圾评论我是知道的,只不过这两天越来越多。几百上千条。。。。

验证码功能可能是废的。

以前不去弄它是因为反正我也不看,我一般就是记录完一个事情就直接关了,也没感觉到垃圾评论有多烦人。

今天顺手弄了下Google Webmaster,接到了一个关于站点被注入的警告。如图:


才开始重视起来。

问题来了:
我这个小博客数据持久华没有使用任何关系型数据库....是存储在纯文本里面的。因此我不可能简简单单的用几条sql 就 delete 掉那些垃圾数据。

而且坑爹的是,这个小博客的后台还没有提供评论管理这样的一个聚合模块,我的一个一个的文章点进去,一个一个评论删除。没有全选之类的。

研究了一下网站文件目录,发现它的每条评论都是以“commentYY-MMDD-xxxx.txt” 这样的格式存放的。

我看了一下,大部分的垃圾评论都是17,18,19年这几年产生的,所以我就一刀切的把这段时间的评论文件都给删除了,无论内容好坏。


[[email protected] linux_xiazhengxin_name]# find . -name "comment19*.txt"
./content/12/04/entry120406-221549/comments/comment190123-064343.txt
./content/12/04/entry120416-191734/comments/comment190118-175419.txt
./content/12/04/entry120416-191734/comments/comment190118-204718.txt
./content/12/04/entry120416-191734/comments/comment190119-132050.txt
./content/12/04/entry120416-191734/comments/comment190119-195101.txt
./content/12/04/entry120416-191734/comments/comment190119-233843.txt
./content/12/04/entry120416-191734/comments/comment190120-032256.txt
./content/12/04/entry120416-191734/comments/comment190120-035428.txt
./content/12/04/entry120416-191734/comments/comment190120-234336.txt
./content/12/04/entry120416-191734/comments/comment190121-113012.txt
.........
./content/09/07/entry090724-203404/comments/comment190131-050547.txt
./content/09/07/entry090724-203404/comments/comment190131-084334.txt
./content/09/09/entry090905-014037/comments/comment190123-064519.txt
./content/09/09/entry090905-014037/comments/comment190123-064647.txt
[[email protected] linux_xiazhengxin_name]# find . -name "comment19*.txt" -exec rm -f {} \;


删完之后,感觉世界都清净了。

此外,考虑到这个提交评论的验证码应该是个摆设,而我也没心思去换一个验证机制,再加上博客也没啥人气,就干脆把评论功能关了。省事!!!
[ ] ( 78 次浏览 ) 永久链接 ( 4.3 / 213 )
给512MB RAM GCP 美区实例添加交换空间 

最近博客经常提示 db error,mariadb 总是莫名其妙的shutdown.查看error.log 发现是 out of memory.

说实话这512MB的VPS我实在不知道该怎么优化,只好寄希望于加个swap space 来顶一顶。好在机器的硬盘还算大。打算分配个1GB出来。

首先在本地创建一个1GB大小的swapfile.

dd if=/dev/zero of=/swapfile bs=1G count=1

别用下面这个命令,会出错。因为它是快速划分空间,并不会即时占用原始大小的空间。

fallocate -l 1G /swapfile //会出错

接下来:

chmod 600 /swapfile //更改权限为 600.

mkswap /swapfile //创建交换格式文件

swapon /swapfile //启用交换文件

接下来可以用过 free -h 或者 htop 或者 swapon -s 看到 swap 已经生效了。

如果你嫌每次都要手动挂载swap 麻烦,可以把配置写入fstab,让其开机自动挂载。
编辑 /etc/fstab 文件,载入一行

/swapfile swap swap rw 0 0


保存即可。重启下可以看到已经生效了。

注:我的系统是CentOS 7.

本文撰写时候参考了以下文章:
https://aws.amazon.com/cn/premiumsupport/knowledge-center/ec2-memory-swap-file/
https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-centos-7
[ ] ( 126 次浏览 ) 永久链接 ( 3 / 77 )
thttpd http server 内存使用量太大的疑问 

前段时间搞了个腾讯云的7天体验服务器,难得国内的机房没备案的域名也能解析。就折腾了一下。

搞了一个号称最迷你的httpd server - thttpd.

官网:https://acme.com/software/thttpd/

下载最新的版本源码:
https://acme.com/software/thttpd/thttpd-2.28.tar.gz

解压,编译,安装。

复制 源码包内的配置文件,稍加修改,运行。

一看进程表,吓我一跳,咋thttpd 一个进程就占掉了我VPS 19%的内存!!!






[email protected]:~$ free -m
total used free shared buff/cache available
Mem: 857 315 368 24 173 364
Swap: 0 0 0
[email protected]:~$ ps aux | grep http
root 8320 0.0 3.2 251016 28484 ? Sl Mar07 0:01 php http.php
root 8321 0.0 0.6 176788 5644 ? S Mar07 0:00 php http.php
root 8323 0.0 1.2 179084 10652 ? S Mar07 0:00 php http.php
root 12666 0.0 5.0 669132 44024 ? Ssl Mar06 1:55 jexus: httpd worker jwsHttpd.exe
www-data 23634 0.2 18.8 191308 165948 ? Ss 15:51 0:06 /opt/thttpd/sbin/thttpd -C /opt/thttpd/config/thttpd.conf
ubuntu 26157 0.0 0.1 13232 1088 pts/0 S+ 16:34 0:00 grep --color=auto http
[email protected]:~$


我tmd 当场就惊呆了,这内存占用快赶上MySQL了。

于是,在它的网站上找找,看有没有关于内存使用的相关配置字段,很遗憾没找到。而且由于它的功能定位很简单,导致了配置文件的选项也很少。目测不超过15个。
这是我的配置:

[email protected]:~$ cat /opt/thttpd/config/thttpd.conf
# This section overrides defaults
port=80
dir=/var/www/html
nochroot
#data_dir
nosymlinkcheck
novhost
noglobalpasswd
user=www-data
host=0.0.0.0
logfile=/var/log/thttpd.log
pidfile=/var/run/thttpd.pid
charset=gbk
max_age=60


应该没啥毛病啊~

在它的首页我看到这样一句话:

Small:
See the comparison chart. It also has a very small run-time size, since it does not fork and is very careful about memory allocation.


意思就是:“我很小,我不会无聊的复制我自己,而且在内存分配方面我很谨慎”

这……我该如何理解这句话。

1.它不像nginx、php-fpm 那样会派生出很多worker,按说内存使用总量应该不会太大。
2.如果它没有派生功能,一直都是单进程。那么好像初始运行内存开辟大点,好像也没问题。

实在是看不懂。

后来我没辙,只能看看网友有没有和我一样有这样的疑惑,结果找到了一封18年前的邮件列表记录:

https://marc.info/?l=thttpd&m=102182637422558&w=2

面对用户关于“thttpd memory usage?”的疑问,acme的成员解释道:你用的内存查看工具是有问题的,是不准确的!

如下:

On some OSs, top seems to count memory-mapped files as part of the
program size. That makes thttpd look much bigger than it really is.


666~在下服了。
[ ] ( 2000 次浏览 ) 永久链接 ( 3 / 457 )

<上一页 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 下一页> >>