Home

Byphunsanit

Linux: แก้ขนาด Swap!

โดยปกติตัว swap จะกั้นพื้นที่ไว้ 1 GB แต่ถ้าหากใช้จริง ๆ แล้วเจอว่าพื้นที่ที่จองเอาไว้มีไม่พอหรือจับจองไว้มากเกินไป ก็สามารถเปลี่ยนพื้นที่ได้เหมือน Virtual Memory ใน windows เรียกว่า

  1. ปิดการใช้ swap ก่อนโดยคำสั่ง
    sudo swapoff -a
  2. เปลี่ยนขนาดพื้นที่โดยคำสั่ง
    fallocate -l 5G /swapfile
    เปลี่ยน 5G เป็นขนาดที่ต้องการ
  3. ทำให้ไฟล์เป็น swap space โดยคำสั่ง
    sudo mkswap /swapfile
  4. ทำให้ไฟล์เป็น swap space โดยคำสั่ง
    sudo swapon /swapfile
  5. ตราจสอบ RAM และ swap ที่ว่างโดยคำสั่ง
    free -h
Byphunsanit

Linux: แรมน้อยก็ต้อง Swap!

เวลาเช่า Virtual Private Servers (VPS) ทำ hosting ไว้วางระบบที่ไม่มีใน host สำเร็จรูป ส่วนใหญ่ราคาที่ต่ำที่สุดที่มีจะให้แรม แค่ 1GB แต่แค่ใน Basic installation | Ubuntu ก็เขียนไว้ว่าต้องการ RAM: 1 gigabyte or more แล้ว แบบนี้จะไม่ทำให้ทำงานช้าได้ยังไง การที่ ram จะเต็มมีอีเมล์ DigitalOcean monitoring resolved: Memory Utilization is running high มาเยือนบ่อย ๆ แก้ได้ง่าย ๆ โดยการกันพื้นที่ hard disk มาแทนแรมเหมือนที่ windows เรียกว่า Virtual Memory นั่นเอง แค่ linux เรียก swap space

  1. เช็คดูก่อนว่าลินุกซ์ของเรามีการตั้ง swap โดยคำสั่ง
    sudo swapon –show
    ถ้าไม่เห็น output กลับมาแสดงว่าไม่ได้มีการใช้ swap ไว้
  2. การทำ swap จะเป็นต้องกันพื้นที่ไว้ใช้แทน ram เราจำเป็นต้องดูก่อนว่าที่ HHD / SSD เหลือให้ใช้อยู่เท่าไหร่ โดยคำสั่ง
    df -h
    จะมี output พื้นที่ให้ใช้งานได้ออกมา
  3. การที่จะต้องใช้พื้นที่เท่าไหร่ดีในการใช้มาเป็นแรมถึงจะพอ Ubuntu แนะนำไว้ใน SwapFaq ให้มีอย่างน้อยเท่ากับจำนวน RAM ไปจนถึง 2 เท่าของ RAM ส่วน Red Hat ได้ทำตารางไว้ ได้ทำตารางไว้ Chapter 15. Swap Space
    แรมที่มีพื้นที่ swapพื้นที่ swap และ Hibernation
    ⩽ 2 GB2 เท่าของแรม3 เท่าของแรม
    > 2 GB – 8 GBเท่ากับแรม2 เท่าของแรม
    > 8 GB – 64 GBอย่างน้อย 4GB1.5 เท่าของแรม
    > 64 GBอย่างน้อย 4GBไม่แนะนำให้ทำ Hibernation
    Recommended System Swap Space
  4. สร้าง swap file โดยคำสั่ง
    sudo fallocate -l 2G /swapfile
  5. ตรวจสอบพื้นที่โดย
    ls -lh /swapfile
    จะมีการตอบกลับมาเช่น
    -rw-r–r– 1 root root 1.0G Mar 9 07:00 /swapfile
  6. ให้ root สามารถใช้ swap file โดย
    sudo chmod 600 /swapfile
  7. ตรวจสอบ permissions โดยคำสั่ง
    ls -lh /swapfile
    จะมีการตอบกลับมาเช่น
    -rw——- 1 root root 2.0G Mar 9 07:03 /swapfile
  8. ทำให้ไฟล์เป็น swap space โดยคำสั่ง
    sudo mkswap /swapfile
  9. ตรวจสอบโดยคำสั่ง
    sudo swapon –show
    จะมีการตอบกลับมาเช่น
    /swapfile file 2G 271.2M -2
  10. ตราจสอบ RAM และ swap ที่ว่างโดยคำสั่ง
    free -h
  11. ทำให้ swap ถาวรหลังจาก shutdown, restart และ reboot
    • backup /etc/fstab โดยคำสั่ง
      sudo cp /etc/fstab /etc/fstab.bak
    • เพิ่มบรรทัดสุดท้ายในไฟล์ /etc/fstab โดยคำสั่ง
      echo ‘/swapfile none swap sw 0 0’ | sudo tee -a /etc/fstab

หลังจากนี้เมื่อ RAM ถูกใช้เกินที่มีจะถูกเขียนลงใน HHD / SSD แทนแรมที่มีไม่พอ พวก service ที่ขัดข้อง stop จะน้อยลง

Byphunsanit

MySql: Basic Config โดย MySQLTuner

เว็บบน DigitalOcean มันชอบบอกว่า monitoring resolved: Memory Utilization is running high กับ NAS server ที่บ้าน ram แค่ 1 GB มันต๊อแต๊ อยากจะสลบอยู่ตลอด เลยต้อง configuration เพิ่มประสิทธิภาพใหม่ให้มันทำงานได้ โดยใช้ MySQLTuner ที่จะช่วยปรับแต่ง database server ได้หลายตัวทั้ง Galera, MariaDB, MySQL, Percona

  1. ก่อนอื่นก็ download MySQLTuner มาช่วยตรวจสอบการติดตั้งที่เหมาะสมก่อนโดยใช้ command
    wget http://mysqltuner.pl/ -O mysqltuner.pl
  2. เรียกใช้โดย
    perl mysqltuner.pl
    จะเห็นข้อความที่จะต้องใช้ในการปรับแต่ง MySql หรือดาต้าเบสตัวอื่น ๆ โดยให้ดูบรรทัดที่ขึ้นต้นด้วย [!!] เป็นหลัก
  3. แก้มายเอสคิวเอล และเทสโดยคำสั้ง
    mysqld –validate-config
    sudo systemctl restart mysql.service
    perl mysqltuner.pl
    วนไปจนกว่าจะได้ performance ที่พอใจ
  4. ตัวอย่างไฟล์ config ที่ได้สำหรับ NAS ที่มี ram 1 GB
    #
    # The MySQL database server configuration file.
    #
    # You can copy this to one of:
    # - "/etc/mysql/my.cnf" to set global options,
    # - "~/.my.cnf" to set user-specific options.
    #
    # One can use all long options that the program supports.
    # Run program with --help to get a list of available options and with
    # --print-defaults to see which it would actually understand and use.
    #
    # For explanations see
    # http://dev.mysql.com/doc/mysql/en/server-system-variables.html
    
    #
    # * IMPORTANT: Additional settings that can override those from this file!
    #   The files must end with '.cnf', otherwise they'll be ignored.
    #
    
    !includedir /etc/mysql/conf.d/
    !includedir /etc/mysql/mysql.conf.d/
    
    #test by mysqltuner
    
    [mysqld]
    # Skip reverse DNS lookup of clients.
    # https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_skip_name_resolve
    skip-name-resolve
    
    # Ratio InnoDB redo log capacity / InnoDB Buffer pool size should be equal to 25%.
    #https://dev.mysql.com/doc/refman/8.0/en/innodb-buffer-pool-resize.html
    #of RAM but beware of setting memory usage too high
    innodb_buffer_pool_size=300M
    
    #https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_connections
    max_connections=70

นอกจากนี้ คำสั่ง perl mysqltuner.pl ยังสามารถใช้ options เพิ่มเติมได้อีกเช่น

optionsความหมายค่าเริ่มต้นตัวอย่างชนิดตัวแปร
–debugdebugging information
–dumpdirexport to–dumpdir=./resultfile path
–forcememแรมทั้งหมด1024–forcemem 32768megabytes
–forceswapswap memory–forceswap 16384megabytes
–hostremote serverlocalhost–host 127.0.0.1IP
–jsonออกรายงานเป็น JSON–json > reports.jsonfile path
–outputfileออกรายงานเป็นไฟล์–outputfile /tmp/result_mysqltuner.txtfile path
–pass, –passwordรหัสผ่าน–pass admin_passwordstring
–portport3306–port 3306 int
–socketใช้ socket ต่างออกไปสำหรับ localhost
–userusername–user admin_userstring
–verboseรายละเอียด–verbose
options บางส่วนที่สามารถใช้ได้

อ่านเพิ่มเติม

Byphunsanit

PHP: 8.3 บน Ubuntu 23.10.1 แล้ว Error

ลง PHP 8.3 ตัวใหม่น่าสุด ลงบนอูบุนตู 23.10 ตัวใหม่เหมือนกันแต่กลับเจอเอ้อเร้อ php8.3-intl : Depends: libicu70 (>= 70.1-1~) but it is not installable

  1. เข้าไปที่ terminal
  2. ไปแก้ sources.list โดยใช้คำสั่ง
    sudo nano /etc/apt/sources.list
    แล้วเพิ่มไปอีก 1 บรรทัด
    deb http://archive.ubuntu.com/ubuntu/ jammy-proposed main
    แล้ว save โดน CTRL+X และ Y
  3. update package index โดย
    sudo apt-get update
  4. ติดตั้ง libicu70 โดย
    sudo apt-get install libicu70
  5. ทดสอบลง PHP 8.3 โดยใช้ extension ตามที่ WordPress แนะนำ เช่น
    sudo apt-get install php8.3-{bcmath,cgi,cli,common,curl,fpm,gd,gettext,imagick,intl,mbstring,mysql,opcache,soap,xml,xmlrpc,xsl,zip}
  6. enable ให้ใช้บน Apache ได้โดยคำสั่ง
    sudo a2enmod php8.3

อ่านเพิ่มเติม

Byphunsanit

Flutter: One or more plugins require a higher Android SDK version error occurs when i run the project

เจอกับ error แบบนี้ One or more plugins require a higher Android SDK version. Fix this issue by adding the following to C:\Users\…\app\build.gradle: android { compileSdkVersion 33 … }

แก้โดยเปิดไฟล์ตาม path ที่เห็นแล้วก็แก้ compileSdkVersion เป็น version ที่เห็นดูก็ใช้ได้

Cr. One or more plugins require a higher Android SDK version error occurs when i run the project