달력

08

« 2018/08 »

  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  

CentOS 센트OS - 파라미터 최적화 스크립트


첨부파일 참조하여 주세요 ~ 

check.centos.sh


root 루트로 실행해야 합니다.


스왑이 0 일때 (스왑 파일이 없는 경우) echo 로 출력되는 부분을 그대로 한줄씩 실행하면 됩니다.


대신 메모리가 1기가라면

dd if=/dev/zero of=/data/swapfile bs=1M count=1024


8기가라면

dd if=/dev/zero of=/data/swapfile bs=1M count=8192


이렇게 실행하시면 됩니다.


#!/bin/bash

#echo -e "32768\t61000" > /proc/sys/net/ipv4/ip_local_port_range
#$ sysctl -w net.ipv4.tcp_wmem="253952 253952 16777216"
#$ sysctl fs.file-max
#$ sysctl fs.file-nr 

echo "----------------------------------"
check_value=`getenforce`
echo "GetEnforce : ${check_value}"
echo "----------------------------------"
echo -e "Parameter\tNow\tRecommand"
echo "----------------------------------"

# Recommand value = 0
recom_value="0"
for check_param in net.ipv4.tcp_timestamps net.ipv4.conf.all.accept_source_route net.ipv4.ip_forward net.ipv4.conf.all.accept_redirects net.ipv4.tcp_tw_reuse
do
        check_param2=${check_param%*.*}
        check_param3=`echo ${check_param} | sed -e "s/${check_param2}//" | cut -c 2-`
        check_value=`sysctl -n ${check_param}`

        if [ "$check_value" -eq "${recom_value}" ]
        then 
                echo -e "${check_param3}\t${check_value}\t${recom_value}\t OK"
        else
                echo -e "${check_param3}\t${check_value}\t${recom_value}"
                read -s -n1 -p "    ${check_param3} ${check_value}->${recom_value} : Submit Now? (y/n) : " submit_yn
                if [ "$submit_yn" == "y" ]
                then
                        echo -e "\tsysctl -w ${check_param}=${recom_value}"
                        echo "$check_param = \"${recom_value}\"" >> /etc/sysctl.conf 
                fi
                echo ${submit_yn}
        fi
done

# Recommand value = 1
recom_value="1"
for check_param in net.ipv4.icmp_echo_ignore_broadcasts net.ipv4.conf.all.log_martians net.ipv4.tcp_syncookies net.ipv4.tcp_window_scaling 
do
        check_param2=${check_param%*.*}
        check_param3=`echo ${check_param} | sed -e "s/${check_param2}//" | cut -c 2-`
        check_value=`sysctl -n ${check_param}`

        if [ "$check_value" -eq "${recom_value}" ]
        then 
                echo -e "${check_param3}\t${check_value}\t${recom_value}\t OK"
        else
                echo -e "${check_param3}\t${check_value}\t${recom_value}"
                read -s -n1 -p "    ${check_param3} ${check_value}->${recom_value} : Submit Now? (y/n) : " submit_yn
                if [ "$submit_yn" == "y" ]
                then
                        echo -e "\tsysctl -w ${check_param}=${recom_value}"
                        echo "$check_param = \"${recom_value}\"" >> /etc/sysctl.conf 
                fi
                echo ${submit_yn}
        fi
done


check_value=`sysctl -n .net.ipv4.ip_local_port_range`
echo -e "Port.Range\t${check_value}\t1024\t65535"
check_value=`sysctl -n .net.ipv4.tcp_max_syn_backlog`
echo -e "MAX.BackLog\t${check_value}\t1024"

check_value=`sysctl -n net.ipv4.tcp_max_tw_buckets`
echo -e "TcpTW.Buckets\t${check_value}\t65536"

# check : ulimit -a / sysctl -n fs.file-nr
check_value=`sysctl -n fs.file-max`
echo -e "FS.FileMax\t${check_value}\t77052"
check_value=`sysctl -n net.core.netdev_max_backlog`
echo -e "NetdevMxBackLog\t${check_value}\t30000"
check_value=`sysctl -n net.core.somaxconn`
echo -e "MaxConnections\t${check_value}\t1024"

echo "----------------------------------------------------------------------------"
free -m
echo "----------------------------------------------------------------------------"
swap_size=`free -m | grep -i swap | awk '{print $2}'`
if [ "$swap_size" -eq "0" ]
then
        echo -e "----------------------------------------------------------------------------"
        echo -e "\tdd if=/dev/zero of=/data/swapfile bs=1M count=[1024|2048|8192]"
        echo -e "\tmkswap /data/swapfile"
        echo -e "\tswapon /data/swapfile"
        echo -e "\tchmod 600 swapfile"
        echo -e "\t/data/swapfile swap swap defaults 0 0 >> /etc/fstab"
        echo -e "----------------------------------------------------------------------------"
fi

ulimit -a
echo "----------------------------------------------------------------------------"

echo "sysctl -p"
sysctl -p


sysctl 이라는 명령어로 수정합니다.

수정할때에는 sysctl -w [파라미터] 로 수정하고, 적용은 sysctl -p 하면 됩니다.


Posted by 멋지다마라송
2018.07.10 00:21

AWS 리눅스 SSH 접속 계정 정리 Tech/Linux2018.07.10 00:21

AWS 리눅스 SSH 접속 계정 정리


Amazon Linux = ec2-user

RHEL5 = root 또는 ec2-user

Ubuntu = ubuntu

Fedora = fedora 또는 ec2-user

SUSE  = root 또는 ec2-user


그리고 SSH 접속할때 Public Key 로 접속하도록 설정했다면 SSH 클라이언트 프로그램에서 이를 지정해야 한다.


SecureCRT 인 경우,

이렇게 해당 세션에 대해서만 퍼블릭 키를 설정하고 사용하는게 좋다.


Putty 뿌띠의 경우, pem 파일 (AWS 기본 퍼블릭 키파일) 은 사용이 안되기 때문에

PuttyGen 이라는 프로그램으로 pem 파일을 ppk 로 변환해야 한다.




Posted by 멋지다마라송

$ ulimit -a

...

open files                      (-n) 1024 <-- 기본값.

...


mysql> show global variables like '%open%';

+----------------------------+----------+

| Variable_name              | Value    |

+----------------------------+----------+

| have_openssl               | DISABLED |

| innodb_open_files          | 2000     |

| open_files_limit           | 1024     | <-- 기본값.

| table_open_cache           | 2000     |

| table_open_cache_instances | 16       |

+----------------------------+----------+

-------------------------------------------------------------------

vi /etc/profile 아래 세줄 추가.


#ulimit setting

ulimit -u 65535  # max number of process 수정

ulimit -n 65535  # open files 값 수정

-------------------------------------------------------------------

vi /etc/security/limits.conf 아래 여섯줄 추가.


*               soft    nofile          65535

*               hard    nofile          65535

root            soft    nofile          65535

root            hard    nofile          65535

mysql           soft    nofile          65535

mysql           hard    nofile          65535

-------------------------------------------------------------------

vi /lib/systemd/system/mysql.service 에서 [Service] 항목에 아래 두줄 추가.


LimitNOFILE=infinity

LimitMEMLOCK=infinity

-------------------------------------------------------------------

systemctl daemon-reload

우분투 재기동.

-------------------------------------------------------------------

mysql> show global variables like '%open%';

+----------------------------+----------+

| Variable_name              | Value    |

+----------------------------+----------+

| have_openssl               | DISABLED |

| innodb_open_files          | 2000     |

| open_files_limit           | 1048576  | <--

| table_open_cache           | 2000     |

| table_open_cache_instances | 16       |

+----------------------------+----------+


참고로, 디비 접속시 접속하는 서버의 DNS lookup 을 생략해주는게 당연히 좋습니다.

vi /etc/mysql/mysql.conf.d/mysqld.cnf


[mysqld]

skip-name-resolve



Posted by 멋지다마라송
2018.06.18 13:46

AWS 리눅스 - 스왑 swap 파일 만들기 Tech/Linux2018.06.18 13:46

AWS - 리눅스 스왑파일 Linux Swap 만들기


AWS 리눅스는 스왑 없이 생성되기 때문에 스왑파일을 따로 만들어줘야 합니다.

메모리가 작은 경우, 스왑이 없으면 에러날 확률이 높습니다. (메모리가 여유있으면 괜찮겠지만요..)


sudo 로 안전하게 해도 되지만, 스왑은 편하게 root 로 작업합니다.





$ sudo su -


먼저 빈 파일을 만듭니다.

아래는 1메가 블럭을 1024개 (1기가 파일) 만들기 입니다.

물리 메모리가 1기가라면 스왑도 1기가 (많이 쓴다면 2기가) 정도가 괜찮고,

물리 메모리가 2기가라면 스왑도 2기가 (많이 쓴다면 4기가) 정도가 괜찮은거 같습니다.

뭐 더 높아도 상관없지만 적절하게 지정하는게 좋습니다.


스왑파일을 /data/swapfile 로 만드는 경우는 아래와 같습니다.


# dd if=/dev/zero of=/data/swapfile bs=1M count=1024


빈 파일이 생성되면 아래 명령어로 스왑파일로 포멧을 해줍니다.

# mkswap /data/swapfile


스왑 온.시키기.

# swapon /data/swapfile


스왑을 온 시키면 권고 퍼미션 안내가 나옵니다.

그대로 퍼미션 수정합니다.

# chmod 600 swapfile


부팅될때 마운트 되도록 /etc/fstab 파일에 아래 한줄을 추가합니다


/data/swapfile swap swap defaults 0 0

Posted by 멋지다마라송
2018.06.18 13:46

리눅스 sed 줄바꿈 바꾸기 Tech/Linux2018.06.18 13:46

vi 로 바꾸기

:1,$s/^M//g

이렇게 하면 줄바꿈을 없앨 수 있습니다.


:1,$s/abc/abc^M/g

이렇게 하면 abc 를 abc 엔터.로 줄바꿈을 만들게 됩니다.


파일 읽어서 바꾸기

cat abc.txt | sed 's/^M//g'

abc.txt 파일을 읽어서 줄바꿈을 없앱니다.


^M = Ctrl+V+M (컨트롤키 누른 상태에서 V 를 누르고, 컨트롤키 놓지 말고 다시 M 을 누르면 됩니다)


Posted by 멋지다마라송


티스토리 툴바