Select Page
IIS 主機上限制 ApplicationPool 記憶體的方法

IIS 主機上限制 ApplicationPool 記憶體的方法

最近遇到 PHP 太吃記憶體的問題,我除了在php.ini 中設定 limit memory 以外,也打算在 IIS 中把總量的記憶體限制住,避免讓主機的記憶體爆滿,而當機,可以在記憶題超過限制後,把自己行程回收。

設定方法

在管理介面中,找到 「Advanced Settings」 ,進去後往下滑找到 「Private Memory Limit (KB)」 ,這邊這個數值是 KB 為主,如果希望將 Private Memory Limit (KB) 設定為 10GB,您需要將其設定為 10485760 KB 設定公式如下

10 GB = 10 * 1024 * 1024 KB = 10485760 KB

我設定的邏輯是觀察主機上所有的 Application Pool 會用到多少的記憶體,然後去分配她

Ark7

Ark7

在一般印象中,房地產投資一直都是門檻較高的領域。相較於股票,雖然房地產風險較低,但起始投資金額至少需要五位數。然而,現在有一家企業,將房地產的穩定性和股票的流動性結合,打造了一套非常優秀的低門檻房地產投資模式。

https://ark7.com/

好處

  • 不用大資金,1000元台幣也可以開始投資房產
  • 不用管理房子
  • 不用管當地法規
  • 不用把錢放在同一個籃子內
  • 持有的是房子的share,可以快速變現,一般房子買賣的成本會是15%,且交易的時間很久,解決流動性問題

私募、REITs、ETF等不同的點

  • 透明性,所有費用公開
  • 可控性,可以隨時買賣
  • 資訊化、IT,有網站和APP,即時更新
  • 每個月租金就直接分潤,例如每月3號就結算,租金就可以月結
  • 每個人的分潤是天結,例如,5月5號才開始投資,那只能享受25天/30(5月天數)的利潤

網站分析

投資人的收益有租金;房子增值且賣出的收益

可以看到的資訊有

  • 你擁有的持分、以及其他人的持分
  • 房子外觀、地點、價格、大小
  • 房子周邊情況
  • 自己的投資狀況,投資額、收益、現金

財務資訊,預估12000

  • 年化租金 18000
  • 稅金 6572
  • 保險費用 624
  • 瓦斯費+水費 50
  • 維護費用 1000
  • 管理費用 1300
  • 預留費用 600

購買房子的花費 30萬美元

  • 購買價格 22萬
  • 貸款 2.5萬
  • 經紀人費用 3000
  • 裝修費 2萬
  • 法律、會計費用 1.6萬
  • 平台費用 9000
  • 營運費用 3300

商模分析

每個房子都會用一間公司持有,投資人投資的是公司

Ark7會持有這間公司1%-10%

物業公司簽約要保證年化租金收益要4%以上,如果低於4%,不能收取物業管理費用

作為平台,連結有房子的賣方、以及想投資的買方

有篩選投資人,您收入20萬,夫妻30萬、資產有100萬,20元就可以投資一個share

問題以及討論

購買房子的初始資金如何擁有?

如何選擇房產?

目前平均年化收益是20%

ChatGPT也可以寫小說了,以ChatGPT作為長篇小說的創作工具

在這篇文章中,我們將深入探索如何透過利用OpenAI的語言模型ChatGPT來創作長篇小說,並突破其輸入輸出字數的限制。透過技術和策略性的實作,我們將探討如何把片段性的產出整合成一個有連貫性的故事,同時探討如何保持角色和劇情的一致性。此外,我們也將討論在創作過程中可能遇到的挑戰,以及如何進行有效的修改和校對。讀者將獲得全面的瞭解,深入理解如何將ChatGPT應用於長篇小說創作。

RecurrentGPT將長短期記憶網絡(LSTM)中的向量化元素(例如,細胞狀態、隱藏狀態、輸入和輸出)用自然語言(即,文本段落)替換,在每個時間步長t,RecurrentGPT接收一段在t-1步生成的文本段落以及對下一段的簡短計劃。然後,它將關注到長期記憶,長期記憶包含所有以前生成的段落的摘要。

延伸閱讀

音樂的新世紀:人工智慧與音樂生成(Music Gen)

音樂的新世紀:人工智慧與音樂生成(Music Gen)

又是 Facebook(Meta),在AI上的研究不落人後,隨著人工智慧的快速發展,音樂生成的領域也正在經歷革命性的變革。本文將深入探討這一技術的演進,揭示如何應用各種的AI工具來創造音樂

試試現成的服務

描述一下你想要的音樂類型、場景

https://waveformer.replicate.dev/

Facebook 開發程式碼

https://github.com/facebookresearch/audiocraft

Music Gen 與其他三個比較、MusicLM、Riffusion、Musai

https://ai.honu.io/papers/musicgen/

Music Gen 論文

https://arxiv.org/abs/2306.05284

免費可以測試用的 huggingface 服務

https://huggingface.co/spaces/facebook/MusicGen

用 Google Colab 來做測試

https://colab.research.google.com/drive/1-Xe9NCdIs2sCUbiSmwHXozK6AAhMm7_i?usp=sharing

延伸閱讀

Redis提升WP性能:一步步教您如何優化安裝與配置Redis資料庫

Redis提升WP性能:一步步教您如何優化安裝與配置Redis資料庫

Redis作為一款開源的高性能key-value數據庫,已經在眾多頂尖科技公司和網站獲得廣泛應用。本文將引領您走過安裝和配置Redis資料庫的過程,並提供實用的優化技巧,助力您的系統性能達到新的高峰。

為什麼選擇Redis?

首先,讓我們理解一下為什麼您應該選擇Redis。Redis以其極速性能、靈活的數據結構和高可用性成為獨一無二的選擇。它可以作為緩存,消息佇列,以及在高壓情況下用作可靠的數據存儲。

安裝Redis

Ubuntu安裝Redis

sudo apt install redis-server

Windows 安裝 Redis

直接下載微軟製作的安裝包,下載網址 https://github.com/MicrosoftArchive/redis/releases

驗證Redis是否安裝成功

如果是剛安裝好,並且在同一台機器上可以直接打指令 redis-cli 就可以連線

redis-cli
redis-cli ping
redis-cli info

如果是別台機器的話,記得要開防火牆,並且指定 IP 以及指定 Port 和指定密碼

redis-cli -h 192.168.0.X -p 6379 -a 123456

設定Redis

設定檔案通常位於 /etc/redis/redis.conf ,編輯完記得要重開服務 sudo systemctl restart redis ,不確定conf檔案的位置的話,可以用 redis-cli info 查找,會顯示以下資訊

executable:/usr/bin/redis-server
config_file:/etc/redis/redis.conf

sudo nano /etc/redis/redis.conf
  • bind:若要遠端連入Redis伺服器,就會需要設定 bind 0.0.0.0 ::
  • databases:設定可用的資料庫數量,在索引的時候是從0開始數,預設會使用索引值為0的資料庫。這個項目的預設值是16
  • save:設定在一定的間隔時間內若資料庫有發生一定程度的改變,就將記憶體中當下的資料存成檔案(快照)。save的撰寫格式為save <seconds> <changes>save 60 10000表示在60秒內至少有10000個key被改變則做一次快照。
  • requirepass:設定客戶端與Redis伺服器連線時所需要的密碼。預設沒有設定,表示不啟用密碼驗證功能。
  • maxclients:設定最大連線數。預設沒有設定,當作10000
  • maxmemory:設定最大的記憶體使用量,如果記憶體用量達到限制,就會根據maxmemory-policy項目設定的策略來嘗試移除key,如果無法移除,就會使該次插入或修改的操作回傳錯誤。預設沒有設定,表示不限制。
  • maxmemory-policy:記憶體用量達到限制時採取的策略。預設沒有設定,當作noeviction,不移除key。其它策略如下:
    • volatile-lru:根據LRU演算法移除過期的key。
    • allkeys-lru:根據LRU演算法移除key。(不管有沒有過期)
    • volatile-lfu:根據LFU演算法移除過期的key。
    • allkeys-lfu:根據LFU演算法移除key。(不管有沒有過期)
    • volatile-random:隨機移除過期的key。
    • allkeys-random:隨機移除key。(不管有沒有過期)
    • volatile-ttl:移除已過期的key中,TTL最小的key。
#bind 127.0.0.1 ::1
bind 0.0.0.0 ::

重啟服務

sudo systemctl restart redis

清除Redis的資料

利用 redis-cli 進去 Redis 主機後,輸入

flushall

清除單一資料的指令是

flush db0

在 WordPress 中使用 Redis

Redis Object Cache 外掛網址 https://wordpress.org/plugins/redis-cache/

設定 wp-config.php

// adjust Redis host and port if necessary 
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );

// change the prefix and database for each site to avoid cache data collisions
define( 'WP_REDIS_PREFIX', 'my-moms-site' );
define( 'WP_REDIS_DATABASE', 0 ); // 0-15

// reasonable connection and read+write timeouts
define( 'WP_REDIS_TIMEOUT', 1 );
define( 'WP_REDIS_READ_TIMEOUT', 1 );

/* That's all, stop editing! Happy publishing. */
require_once(ABSPATH . 'wp-settings.php');

組態檔

Configuration constantDefaultDescription
WP_REDIS_HOST127.0.0.1The hostname of the Redis server
WP_REDIS_PORT6379The port of the Redis server
WP_REDIS_PATHThe path to the unix socket of the Redis server
WP_REDIS_SCHEMEtcpThe scheme used to connect: tcp or unix
WP_REDIS_DATABASE0The database used by the cache: 0-15
WP_REDIS_PREFIXThe prefix used for all cache keys to avoid data collisions, replaces WP_CACHE_KEY_SALT. Should be human readable, not a “salt”.
WP_REDIS_PASSWORDThe password of the Redis server. Supports Redis ACLs arrays: ['user', 'password']
WP_REDIS_MAXTTL0The maximum time-to-live of cache keys
WP_REDIS_CLIENTThe client used to communicate with Redis: predisphpredis or relay
WP_REDIS_TIMEOUT1The connection timeout in seconds
WP_REDIS_READ_TIMEOUT1The timeout in seconds when reading/writing
WP_REDIS_IGNORED_GROUPS[]Groups that should not be cached between requests in Redis

常用控制指令

CommandDescription
wp redis statusShows the object cache status and diagnostics
wp redis enableEnables the object cache
wp redis disableDisables the object cache
wp redis update-dropinUpdates the object cache drop-in

效能考量,安裝 Phpredis

請先到 phpredis 這邊搜尋對應你平台的檔案,用 Linux Ubuntu 為例,下載 redis-6.0.2 版本 ,並且解壓縮他

wget https://pecl.php.net/get/redis-6.0.2.tgz
tar -zxvf redis-6.0.2.tgz
cd redis-6.0.2

接下來先編譯原檔案

sudo phpize
sudo ./configure
sudo make && sudo make install

完成編譯檔案後,要把 .so 檔案放到 php 的 modules 中,先把該目錄找出來

php -i | grep extension_dir

系統回應我,extension_dir => /usr/lib/php/20220829 => /usr/lib/php/20220829 ,則將剛編譯好,放在 modules 下的 redis.so 複製到正確的目錄中

sudo cp ./modules/redis.so /usr/lib/php/20220829/

複製完畢後,需要去修改 php.ini 檔案,讓他支援 redis,這邊我示範用 Nginx

sudo nano /etc/php/8.2/fpm/php.ini

將 extension 打開,請找到 Dynamic Extensions ,並且在下面加入

extension=redis

設定完成後,重開 php 讓他生效

sudo systemctl restart php8.2-fpm

檢查方法,利用info.php,並且搜尋是否有redis字眼,如下圖就是成功了

關於Redis的大小事

預設安裝完畢,初始話是支援16個資料庫的,分別由編號 0-15 ,要增加資料庫,要去 Redis 的組態檔裡面修改 redis/redis.conf 中,找到 databases ,並且調整數值後,重新啟動即可

databases 16

Redis 讀取資料

redis-cli set my_key "Value"
redis-cli get my_key

Redis 列出所有的 KEY

redis-cli KEYS *

相關文章

詳細的指令操作介紹