初心易得,始終難守
C'est la vie.© 2002 - 2026
  • 我是誰-Who Am I
  • 我在哪-Where Am I
  • 我是什麼-What Am I
  • 年鑑-YearBook
    • 二零零六年终总结
    • 一吻定情—二零零八年年终总结
    • 突如其来的明天—二零零九年年终总结
    • 人生大起大落得太快——二零一零年年终总结
    • 贰零①①年年终总结-女朋友已经成家了
    • 贰零壹贰年年终总结-奔波的肿瘤
    • 贰零壹叁年年终总结
    • 雪字怎么写-贰零壹肆年年终总结
    • 每个不曾表白的今天,都是对青春的亏欠-贰零壹伍年年终总结
    • 按部就班的IT 人生-貳零貳肆年年終總結
    • 真正的閱讀-貳零貳伍年年終總結
  • 連結
RSS
6 月 30 日, 2025 年

歐羅巴的風吹痛了我的頭

Ken 隨筆 0 Comments

上個月去了歐洲,也去了年輕的時候應該去的巴黎。

Emirates 居然有免費機上Wi-Fi,土豪國家的航班確實不一樣,餐點也是一大盤,各種小零食,感覺以前坐的飛機都是假的,這才是真正的飛機。

巴黎人真的很需要香水,因為以前可能真的很臭,在從義大利到法國的這段旅程中,我發現歷史的長度其實是不一樣的,同樣的五百年,歐洲大陸上的每個國家,不,應該說每一片土地上的人,前進的速度是不一樣的,就像華夏文明的那片土地,所謂的五千年歷史,可考的只有兩千年,而這兩千年裡面,倒行逆施的還不知道有多少年 ,歷史的長度並沒有任何值得驕傲的地方,因為他可能是源遠流長,也可能是又臭又長。

義大利人大概是從羅馬帝國終結就厭倦了戰爭而變得慵懶,畢竟哪個國家要論戰爭的藝術,恐怕都是不及羅馬帝國的,鬥獸場就是如何花式殺人的藝術表演場所。

在墨索里尼時代則完整的表達了打一炮就跑去喝咖啡的精神,現在也是,關鍵地點的持槍警衛,幾乎都會端著一小杯義式濃縮,怪不得動不動就🤌🏿,咖啡喝多了可能就會這樣,Si?

羅馬的行程大概是在不同的天主教墓穴中穿梭,還可以直接看到某一任教皇的乾屍,這樣那個教皇會開心嗎?感覺他應該不會開心吧,還是他有遺囑說可以給大家看?

我最大的發現,是在梵蒂岡博物館裡面四處的大理石牆面上都有塗鴉和刻字,我原本以為是最近的這些人幹的,但是我從落款的日期中發現,我靠,好幾百年前,原來古人的手也是這麼賤,相比之下凡爾賽宮的牆面上就沒有刻字。

空中之城是個獨特的地方,這裡的居民應該都搬走了,剩下的只有商家和以前殘留的洞穴,那些洞穴看起來就是修道士們苦修的地方,依山挖個洞,雖然他的位置看起來很高,但是風並沒有很大,因為進入空中之城的路非常陡峭,即使已經改為了現代化的水泥路面,但仍時不時的有專門爬山像小山貓一樣的救護車開上來,托著走不動路的歐洲老人家下山去。

威尼斯看起來更多的是陳舊,似乎停留在了歷史的某一個時間點,原來的居民已經搬走很多,賭場也沒有開,最熱鬧的地方就是廣場和超市,也許有扒手。威尼斯或許是很獨特,但是他的獨特並沒有讓人覺得驚奇之處,純粹算是見證了商會的興盛與消亡,大概就如同大航海時代世界各地的那些曾經興盛的港口吧。

比薩斜塔位於一個比較鄉下的地方,也許是以前的水運比較發達。人出奇的比其他地方多,可能是因為比較有名,也可能是因為Viking 的郵輪剛好停在旁邊下來了一大群人。但是和斜塔比起來我覺得旁邊的教堂更有意思,所有的窗戶都沒對齊,當年修房子的人一邊修一邊想要怎麼調整,真是一個動態大工程,比現在修房子難度高很多喔。

但從羅馬看到巴黎,便會覺得巴黎的建築並沒有多了不起,鐵塔,聖母院,凡爾賽宮,還是要賣得出贖罪券的團隊最有錢,修得最華麗。

Monaco 的海洋博物館沒有時間去,下次應該要去看一看。

凡爾賽宮只能看到他的軀殼,看起來凡爾賽宮沒有被翻修過,畢竟從歷史書中看來,大革命時期的革命家們雖然愛好殺人,但似乎並沒有見到他們毀壞文物,但凡爾賽宮裡面擺放的東西看起來並不在他們原來的位置,似乎是從其他地方搜羅來然後再擺上去的,沒有辦法想像他原來的樣子,只能確定他原來不是現在這個樣子剩下的似乎是從其他地方找來東拼西湊的,因為很多雕塑的顏色,位置與原本宮殿的顏色和搭配格格不入,沒想到法國人為了賺遊客的錢,也這麼厚顏無恥。

羅浮宮還算是不錯,很多看不懂的畫作,和遠遠看不清楚的蒙娜麗莎,但是我依然錯過了行前準備好要去的埃及館,只能下次再去。

紅磨坊沒有想象中的好看,但仍然是場場爆滿,女演員的奶都比較小,大腿都比較壯,也許是為了方便表演,畢竟康康舞是招牌,太大的奶抖動可能會因為晃動過於劇烈而無法穩定姿態,當然美觀和藝術性是有的,力與美的結合,但不知道是不是招募不到新人,重複的面孔很多,也沒有我喜歡的類型。

很不幸的在巴黎被風吹到著涼,可能是因為褲子穿太薄,巴黎市區的溫度只有十幾度,在酒店的床上攤了半天,吃了普拿疼繼續遊玩。

6 月 4 日, 2025 年

沒想到竟然已經到了和同學說永別的年紀

Ken 隨筆 黑牡丹 0 Comments

今天上午突然看到黑牡丹的老公用她的wechat 發了一則訃告,雖然我一直認為她焦慮的遵循著自己想要或又不想要的人生軌跡盡一個女人一生應盡的各種繁瑣或又興致盎然的責任,即使有埋怨,仍不後悔自己當初離開北京的選擇,但是我怎麼也沒想到她會走這麼早。

最後一次和她見面是2023年8月的重慶,快要兩年了,那時候的她忙於輔導小孩的學習,出來玩的時候看起來比上一次見面要好得多,似乎忙碌可以讓她安定,但還是能感受到她情緒中的焦慮。

之所以她被大家叫做黑牡丹是因為她作為一個皮膚比較黑的美女在我們那個地方不是很常見,我覺得是沒有那麼黑,但在我們那個其他美女皮膚都很白的地方,大概就顯得黑了吧。

願她去到沒有病痛的地方,亦或是下一世能恣意妄為的生活。

雖然葳君說,這一切結束,其實只有虛空。

5 月 5 日, 2025 年

在AWS EC2 instance 上添加一個swap

Ken Tech 0 Comments

雖然這是一個常規動作,但是我最近發現一個特別的配置。

OOM 不是經常發生的事情,他是一個偶發事件,通常是因為業務流量突增,或是Java memory leak,之所以要說Java 因為他最容易出問題,code 寫得好就是Enterprise level,code 寫得差就是 OOM level。

一般來說我會將swap 空間放置於ebs 上,這樣做沒什麼問題,但極端情況下很可能會導致整個ec2 失去響應,那麼這時候你可以使用第二塊較小的單獨的data volume 來做swap,或者直接啟動具有instance store 的ec2,使用instance store 的高速ssd 來swap。

使用ebs 來swap:

fallocate -l 1G /home/swapfile
chmod 600 /home/swapfile
mkswap /home/swapfile
swapon /home/swapfile

Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=12438694-fc0d-4e8b-b7a8-41c6a9e38971

添加到fstab:

/home/swapfile  none    swap    sw      0       0

使用instance store 來swap

mkswap /dev/nvme1n1
swapon /dev/nvme1n1

Setting up swapspace version 1, size = 54.9 GiB (58999992320 bytes)
no label, UUID=3afa04d4-787f-4c31-a491-3581a41c3bb1

添加到fstab:

UUID=3afa04d4-787f-4c31-a491-3581a41c3bb1  none    swap    sw      0       0

instance store 做swap 的效果非常好,因為本地的高速ssd 可以承載較高的iops 和throughput ,可以抗住數倍於memory size 的workload,當然,這還要看你的應用類型和可以接受的響應時間。

OK,這些方式都要花錢,那麼有沒有不花錢,又可以避免在短暫的異常下OOM 的辦法?畢竟一說到要花更多的錢,老闆都會很不開心。

今天要說的是zram,從名字就可以看出他就是zip ram的意思,在Amazon Linux 2023 中已經預裝了相關的組件,可以直接修改配置文件即可啟用這項功能。

我也是偶然發現他的,因為我發現在micro type 的instance 上才會有swap 而更大的instance type 沒有,而且在更換instance type 的時候他會自己更動。

在預設的配置文件中,只有memory 小於800M 的instance type 才會啟用一個和memory 大小相同的zram device,只需要將host-memory-limit 改為超過當前instance type memory size 的大小,重啟即可。


cat /usr/lib/systemd/zram-generator.conf 
# This config file enables a /dev/zram0 device with the default settings:
# — size — same as available RAM or 8GB, whichever is less
# - host-memory-limit: Enable only on small instance types (less than 800MB)
# — compression — most likely lzo-rle
#
# To disable, uninstall zram-generator-defaults or create empty
# /etc/systemd/zram-generator.conf file.

# zram0 defaults to swap
[zram0]
# Up to 8GiB of zram, follows Fedora/CentOS defaults
zram-size = min(ram, 8192)
# Instances with more than 800MiB of RAM don't need this on AL2023
host-memory-limit=4096
# This is the kernel default, fastest but maybe we want zstd for
# small instances which compresses more ?
compression-algorithm=lzo-rle

看看加上沒有:

zramctl 
NAME       ALGORITHM DISKSIZE  DATA  COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 lzo-rle       3.7G 11.7M 336.5K  708K       1 [SWAP]

壓縮比例可以到多少?

這是個玄學,我還沒有找到可信的評測,但是廣泛的評價是可以從 1:1 到 3:1,畢竟放入memory 的data 有些是已經壓縮過的,那麼就只能是團進團出,沒壓縮過的data 也許可以多一點點。

回到之前的問題,這主要是為了解決在短暫的異常下不要那麼容易OOM,他也可能帶來一些副作用,比如CPU負載上升,但和不要OOM 比起來似乎沒有那麼重要,持續的memory leak 仍會導致OOM發生,任何形式的swap 都只是應對偶然的突發狀況,而不是長期性的超過memory size 的使用,如果已經預期當前的application workload 會使用到超過instance type 的memory size,就應該要及時的升級。

4 月 19 日, 2025 年

斷斷續續看完了《生死場》

Ken 隨筆 0 Comments

我想蕭紅的獨特應該是在於,他沒有那麼左。

花了大概20天的時間,斷斷續續看完了《生死場》,因為語言帶有那個年代的特徵,台灣的版本不像中國的版本竄改了許多當時的語言,使得我讀起來頗費一些心思去想到底是什麼意思,還有一些口語又沒那麼口語化,使得我揣測東北人講那句話的口氣,但就還好,因為罵人的言語也不過那麼幾句。

魯迅作序並不是什麼好事,畢竟他弟弟在文學方面的成就比他高得多,充其量算是個現在的公知,就像很多人說的,還好他死在了舊社會。

《生死場》中對於底層民眾的描繪有獨特的地方,因為有一些場景竟然是我想像不到的,例如月英的綠色牙齒,其他的描繪,或多或少算是見過一些。我並不認為最後幾個章節對於滿洲國的描繪是他人生中的體驗,因為看起來沒有深度,更像是為了迎合當時的抗日潮流而寫就的一些文字,我並不是說日軍沒有作惡,而是那些道聽途說的作惡多端和前面對於生死的描繪,比起來顯得事不關己。

而其中關於地主階級對農民殘酷壓榨的描繪,更顯得突兀,如果基於小說本身的衝突效果,當然沒問題,但這和《呼蘭河傳》中關於地主爺爺對待租戶的的描繪完全兩極,而《呼蘭河傳》是他在人生歲月的最後完成,我當然願意相信後面的作品更接近他短暫人生中的真實。

比起來陸老師強力推薦的《邊城》聽起來更像靡靡之音啊……

4 月 17 日, 2025 年

將WordPress 的Redis plugin 配置為使用AWS ElastiCache redis cluster

Ken Tech 0 Comments

這個plugin 已經存在很多年,一直以來我都使用single node 的方式,因為wordpress 的cache data 從mysql 取一遍沒有太大的難度,但是對於高負載的網站來說,這總是不合理的。

而single node 有他壞掉後就要從database reload data 的問題,雖然眾多的雲端服務商提供了failover 的機制來避免node 壞掉不可用的問題,但難免會有某些網站需要大量的寫入,比如wordpress.com這樣的。

這個plugin 應該很早就支持cluster 的方式了,只不過我從來沒注意過,而他的github 又語焉不詳,我想他可能是想要賣他的pro 版本。

嘗試了一下,有一點需要注意的地方:

single node 方式支持tls,但cluster mode 不支持tls,所以elasticache serverless 不行,因為serverless 的tls 無法關閉,只能是self design cluster mode enabled。

我認為作者在這個地方隱晦的表明了這一點,雖然他沒有直接講出來。

用如下的方式配置wp-config.php 即可。

/**wp redis object cache*/
define('WP_REDIS_CLIENT','pecl');
define('WP_REDIS_CLUSTER', [ 'tcp://valkey-cluster.clustercfg.apn3.cache.amazonaws.com:6379',] );

那麼php session 呢?

修改php.ini 原來的配置,如下兩處,

;session.save_handler = redis
session.save_handler = rediscluster

;session.save_path = "tcp://valkey.0001.apne1.cache.amazonaws.com"
session.save_path = "seed[]=valkey-cluster.clustercfg.apn3.cache.amazonaws.com:6379"

一個有用的測試session 的script

<?php
//simple counter to test sessions. should increment on each page reload.
session_start();
$count = isset($_SESSION['count']) ? $_SESSION['count'] : 1;
echo $count;

$_SESSION['count'] = ++$count;

再看看ElastiCache 裡面有了沒,雖然不應該用keys command ……

valkey-cluster.clustercfg.apn3.cache.amazonaws.com:6379> keys *PHP*
1) "PHPREDIS_CLUSTER_SESSION:d9uv2emobrcmpc7g5fk7bduqgq"
2) "PHPREDIS_CLUSTER_SESSION:d30c1t3kln5df0uij8f7gqibnt"
3) "PHPREDIS_CLUSTER_SESSION:bh5buktvsumi1k6j7hcpjcil6c"
4) "PHPREDIS_CLUSTER_SESSION:3s6jagi622rt0nqdof9i1otd09"
5) "PHPREDIS_CLUSTER_SESSION:fq6tnls1dcfv0bspljq9j2k5i4"
6) "PHPREDIS_CLUSTER_SESSION:1p1ajkvr641cp99edm9cm74o6s"

2025-08-22 update

糾正我的錯誤,這個plugin 是支持ElastiCache serverless 的,wp-config.php 中可以按照如下配置:

/**wp redis object cache*/
define('WP_REDIS_CLIENT', 'pecl');
define('WP_REDIS_HOST', 'valkey.serverless.apn3.cache.amazonaws.com');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_SCHEME', 'tls');
define('WP_REDIS_DATABASE', 0);

2025-11-16 update

我不是很確定可以使用ElastiCache serverless 是因為我的配置下他還沒有進行scaling,只有一個master 和一個slave,效果等同於主從複製模式,如果存在多個shards,是否還可用,能否正常跳轉?

valkey-serverless:6379> CLUSTER INFO
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:2
cluster_size:1
cluster_current_epoch:0
cluster_my_epoch:0
cluster_stats_messages_sent:0
cluster_stats_messages_received:0
total_cluster_links_buffer_limit_exceeded:0

okay,我創建了一個多分片的集群,實驗證明,這個plugin 看起來無法處理MOVED,之所以可暫時使用ElastiCache serverless 是因為他只有一個shard:

wp redis status
RedisException: MOVED 12096 valkey-cluster.cache.amazonaws.com:6379 in /home/www/bbken.org/wp-content/object-cache.php:1934
Stack trace:
#0 /home/www/bbken.org/wp-content/object-cache.php(1934): Redis->get()
#1 /home/www/bbken.org/wp-content/object-cache.php(193): WP_Object_Cache->get()
#2 /home/www/bbken.org/wp-includes/functions.php(1779): wp_cache_get()
#3 /home/www/bbken.org/wp-includes/load.php(939): is_blog_installed()
#4 /home/www/bbken.org/wp-settings.php(176): wp_not_installed()
#5 phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1374): require('...')
#6 phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1293): WP_CLI\Runner->load_wordpress()
#7 phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#8 phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/bootstrap.php(84): WP_CLI\Bootstrap\LaunchRunner->process()
#9 phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/wp-cli.php(35): WP_CLI\bootstrap()
#10 phar:///usr/local/bin/wp/php/boot-phar.php(20): include('...')
#11 /usr/local/bin/wp(4): include('...')
#12 {main}
Error: Error establishing a Redis connection. To disable Redis, delete the `object-cache.php` file in the `/wp-content/` directory.

2025-11-17 update

但是經過AI 對於source code 的分析,以及我的反覆測試,如下的配置實際測試可以使用:

/**wp redis object cache*/
define('WP_REDIS_CLIENT', 'phpredis');
define('WP_REDIS_CLUSTER', [
    'tls://clustercfg.valkey-cluster.cache.amazonaws.com:6379',
]);
define('WP_REDIS_SSL_CONTEXT', [
    'verify_peer' => false,
]);

從CloudWatch 的指標看起來,三個節點中都有讀寫keys,沒有問題,完美。

«‹ 5 6 7 8›»

過 客

  1. R2 on 卷進了美商5 月 15 日, 2024 年

    终于回来了,好。

  2. Ken on Mommy最後的樣子11 月 6 日, 2023 年

    也沒有很久吧,最近終於閒下來

  3. R2 on Mommy最後的樣子10 月 26 日, 2023 年

    好久不见

  4. Ken on 天朝Loli控组曲(带歌词,修正版)10 月 12 日, 2023 年

    哈哈哈,祝福你,好人一生平安

  5. liu on 天朝Loli控组曲(带歌词,修正版)10 月 12 日, 2023 年

    hello,我在找天朝lolicon组曲时发现了你的博客,感谢你十四年前做出的贡献,祝一切安好

January 2026
S M T W T F S
 123
45678910
11121314151617
18192021222324
25262728293031
« Dec    

Spam Blocked

102,164 spam blocked by Akismet

↑

© 初心易得,始終難守 2026
Powered by WordPress • Themify WordPress Themes