에러라고 생각할 수도 있고 아닐 수도 있지만...

jsp에서 커넥션을 하나만 생성하고 생성된 커넥션으로만 Read, Write를 했는데...

Write하는동안 read를 할 수 없도록 lock이 걸려 있다..

lock때문에 동시 접속시 tomcat이 뻗어버리는 상황까지 발생...


ab에서 concurrency를 10개 이상을 셋팅하면 무조건 뻗는다... ㅋㅋㅋㅋ


결국 sqlite는 동시접근을 하면 안되는구나 라는 판단이 들고.. 다른 DB로 바꿔 버렸다 ;;

intent filter를 통해 설정.

인터넷 브라우저에서 메뉴-페이지 공유 라던가.... 암튼 메뉴의 공유 라는 명령을 실행할 때 내 앱도 받을 수 있게 해주는 방법이다.

받고자 하는 Activity에 설정한다


<intent-filter>

<action android:name="android.intent.action.SEND" />

<category android:name="android.intent.category.DEFAULT" />


<data android:mimeType="image/*" />

<data android:mimeType="video/*" />

<data android:mimeType="audio/*" />

<data android:mimeType="text/*" />

<data android:mimeType="application/*" />

<data android:mimeType="plain/*" />

</intent-filter>

<intent-filter>

<action android:name="android.intent.action.SEND_MULTIPLE" />

<category android:name="android.intent.category.DEFAULT" />


<data android:mimeType="image/*" />

<data android:mimeType="video/*" />

<data android:mimeType="audio/*" />

<data android:mimeType="text/*" />

<data android:mimeType="application/*" />

<data android:mimeType="plain/*" />

</intent-filter>


android:mimeType이 실제로 내 어플에서 받을 데이터의 유형이다.

예를들어 브라우저에서 페이지 공유를 하면 웹URL을 text형태로 받을 수 있다.


===


반대로 내 앱에서 공유하기 메뉴를 만들어 다른 어플에 데이터를 전송하고자 하려면 startActivity를 사용한다.


Intent i = new Intent(Intent.ACTION_SEND);

i.setType("text/plain");

i.putExtra(android.content.Intent.EXTRA_TEXT, "Share Data");

startActivity(Intent.createChooser(i,"Share using"));


Intent:setType에 설정되는 값에 따라서 받을 수 있는 앱의 목록이 달라진다.

text/plain은 SNS앱에 공유하기가 가능한 타입이다.

intent filter를 설정하여 받을 수 있다.

받고자 하는 Activity에 설정.


<intent-filter>

<action android:name="android.intent.action.VIEW" />

<category android:name="android.intent.category.DEFAULT" />

<category android:name="android.intent.category.BROWSABLE" />

<data android:scheme="myapp"/>

</intent-filter>

<intent-filter>

<action android:name="android.intent.action.VIEW" />

<category android:name="android.intent.category.DEFAULT" />

<category android:name="android.intent.category.BROWSABLE" />

<data android:scheme="http" android:host="www.daum.net" android:pathPrefix="/"/>

</intent-filter>



custom scheme 설정과 http scheme에 대한 intent filter이다.


URL을 받기 위한 intent filter를 설정할 때에는 android.intent.category.BROWSABLE을 필히 설정해야한다.
또 한, 하나의 intent filter에는 1개의 scheme에 대한 정보만 들어가야 된다. (처음에 하나에 두가지를 같이 넣었었는데 이상 동작을 함. 심심하면 테스트 하면서 차이를 아는것도 좋은 방법일듯)


http scheme에 대한 설정을 할 경우 android:pathPrefix를 필히 설정해야 거의 모든 android폰에서 동작한다. android:host는 특정 host에 대한것만 처리하기 위해 넣을때만 필요하다.


http scheme은 삼성폰의 icecream 이상 버전에서는 동작하지 않는다. (현재로선 절대 안되니 굳이 동작하게 하려고 고민할 필요도 없다)

http://www.sqlite.org/speed.html

자세한건 링크 고고싱

'develop > DB' 카테고리의 다른 글

MariaDB 오류 (Index for table '.\mysql\db.MYI' is corrupt; try to repair it)  (0) 2024.05.17
Mysql, GMT +0 기준 시간  (0) 2019.03.05
cassandra db 정리  (0) 2013.05.09

참조 : http://blog.naver.com/minzzanggg?Redirect=Log&lgNo=130140544171

1. windows7 iso파일과 usb(4G 이상)를 준비.
2. Windows7 USB/DVD Download tool 설치
3. Windows7 USB/DVD Download tool 실행하여 준비한 ISO파일 선택

발견된 문제.

1. USB에 정상적으로 복사가 완료된 후 노트북에 설치시 USB3.0지원하는 포트에 꽂으면 설치시 드라이버를 찾을 수 없다는 에러가 나온다.
=> USB 2.0포트에 꽂으면 대부분 설치된다.
=> SSD관련은 CMOS Setup에서 ACHI와 SATA관련 설정을 변경하면 될듯(참조:http://cafe.naver.com/ssdsamo/11040)

* spin_lock_irqsave()와 spin_lock_irq()
둘다 interrupt를 disable 시킨 이후에 spin lock을 획득하는 것은 동일하지만,
spin_lock_irqsave()는 CPU의 flag 레지스터를 보관했다가
spin_unlock_irqrestore()로 복구할 수 있다.

* spin_lock()과 spin_lock_irq()의 차이는
spin_lock()은 interrupt를 disable하지 않기 때문에
interrupt handler(top half)에서는 사용할 수 없다.
대신 이때는 spin_lock_irq()나 spin_lock_irqsave()를 사용해야 한다.

* spin_lock_bh()
같은 종류의 softirq는 여려 CPU에서 동시에 실행될 수 있기 때문에
([ksoftirqd/CPUn] 커널 쓰레드가 softirq의 실행을 담당한다.)
softirq를 disable한 이후에 spin lock을 획득한다.
원래 이 함수의 이름은 spin_lock_softirq() 정도가 되어야 맞겠지만
예전 커널의 흔적이 아직 남아있다.

* 그리고, spin_lock()은
spin lock으로 보호해야 할 데이터가
interrupt handler(top half)에서도, softirq handler에서도 접근하지 않고
단지 그 외의 일반적인 커널 코드에서만 접근한다면
interrupt disable, softirq disable 같은 overhead 없이 spin lock을 얻을때 사용한다.



http://kldp.org/node/54671 답글에서 발췌

처음 테스트 할 때에는 분명 windows건 linux건 mysql서버가 다운되면 mysql_ping과 insert query가 약 15초 정도 멈춘 후 프로세스가 다시 정상적으로 진행됐었는데...
오늘 linux에서 타이머를 테스트 하려고 하니 15분간 멈춰 있었다...;;

덕분에 하루종일 인터넷을 검색했다.

키워드로 검색되는 거의 모든 페이지를 본 듯하다.. 하지만 해결을 하지 못했다.


windows에서는 간단히 

mysql_option(..., MYSQL_OPT_READ_TIMEOUT, ...);
mysql_option(..., MYSQL_OPT_WRITE_TIMEOUT, ...);

두개만 설정하면 된다.


하지만 linux에서는 저 방법도 안되고.. 꼼수로 CONNECT_TIMEOUT을 설정한 후 쿼리 전에 항상 재접속을 하는 방법을 해봤는데.. 뭐.. 역시나 안된다..(아마 insert query를 하면서 멈추지 않았을까 생각된다... 아니면 조건을 잘 못 했다거나 ;;)
된다고 해도 이 방법을 쓰면 안되겠지만;;


결국 mysql 소스를 이리저리 까뒤집어서 socket에 option을 설정하는 것으로 해결했다.

소켓이 생성되는 시기는 connect류의 함수가 호출되는 시기이므로 connect함수가 호출 된 후 설정하였다.

struct timeval tv;
tv.tv_sec = 1;
setsockopt(obj->net.fd, SOL_SOCKET, SO_SNDTIMEO,(struct timeval *)&tv,sizeof(struct timeval));
setsockopt(obj->net.fd, SOL_SOCKET, SO_RCVTIMEO,(struct timeval *)&tv,sizeof(struct timeval));


대충 10여회 테스트 한 결과 아무리 오래 걸려도 1분은 걸리지 않았는데.. 이번엔 처음보는 에러가 나온다. 에러번호는  2013인데 에러 내용이 달라졌다..

2013, Lost connection to MySQL server at 'reading initial communication packet', system error: 111

음 -_-;;

일단 예상은... timeout 시간을 설정함으로써 DB와 연결이 되지 않으니 접속 권한이 없는것으로 판단되어 나타나는 에러 같은데...


약 10여회 테스트 결과는 정상 동작했다.

'develop > linux' 카테고리의 다른 글

sqlite 동시 접근시 에러??  (0) 2012.08.11
spin_lock, spin_lock_irq, spin_lock_bh  (0) 2012.06.28
ssh 접속시 증명서 변경됐다고 나올 때  (0) 2012.05.31
ubuntu 기본 설정  (0) 2012.05.30
segment fault 지점 찾기  (0) 2012.04.06

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

ssh  root@[IP]

이렇게 쳤을뿐인데... 




이런 무시무시한놈이 나와서 놀라게 할때가 있다.

저도 그래서 개깜놀해서 네이년에 잽싸게 검색해봤더니.

금방 답을 찾았네요.

제가 접속한 상태에서 그쪽 리눅스를 다시 깔았었거든요.

그래서 이전에 접속한 RSA 키 값으로 자꾸 접속하려니까 맞지 않았던거에요.

결론은 지우면 된다는거.



ssh-keygen -R [ IP or DomainName]

ex) ssh-keygen -R 123.123.123.123
 

 


터미널에 저거 치면 된다. 

아 쉽다.-_- 

그리고 다시 ssh root@[IP]

하면 이제 될꺼에요^^ 



혹시 그래도 안된다면

find / -name known_hosts 을 통해 해당파일을 찾아 지우면 된데요.
root계정이면 /root/.ssh/known_hosts 에 있고,
일반계정이면 /home/username/.ssh/known_hosts 에 있답니다.

그럼 즐거운 리눅스 생활! 


'develop > linux' 카테고리의 다른 글

sqlite 동시 접근시 에러??  (0) 2012.08.11
spin_lock, spin_lock_irq, spin_lock_bh  (0) 2012.06.28
mysql_ping 15분 hang 해결방안  (0) 2012.06.28
ubuntu 기본 설정  (0) 2012.05.30
segment fault 지점 찾기  (0) 2012.04.06

.bashrc (혹은 쉘 종류별 파일)

alias ll='ls -al'

alias grep='grep --color=auto'


.vimrc

set ts=4

set number


부트로그 활성화

# vi /etc/default/bootlogd

BOOTLOGD_ENABLE=Yes

'develop > linux' 카테고리의 다른 글

sqlite 동시 접근시 에러??  (0) 2012.08.11
spin_lock, spin_lock_irq, spin_lock_bh  (0) 2012.06.28
mysql_ping 15분 hang 해결방안  (0) 2012.06.28
ssh 접속시 증명서 변경됐다고 나올 때  (0) 2012.05.31
segment fault 지점 찾기  (0) 2012.04.06

예제를 위하여 간단한 코드를 작성하였다.

배열 data[[]는 65535개의 int 형이다.

 

segment fault 발생을 위해 배열 범위를 넘겨 데이타를 쓰려고 시도해 본다.

 

 

core dump 파일 생성을 위하여

ulimit -c unlimited 를 수행해 준다

소스코드 컴파일시 -g 옵션을 붙여 심볼이 생성되도록 한다.

 

 

segment fault로 인하여 core dump 파일이 생긴것을 확인하고

gdb를 이용하여 segment fault 지점을 확인한다.

 
 
cross compile 환경에서도 core파일을 nfs로 넘겨
gdb-ppc 같으것으로 확인해볼수 있다


퍼옴 : http://blog.naver.com/gooddev/110008383660

'develop > linux' 카테고리의 다른 글

sqlite 동시 접근시 에러??  (0) 2012.08.11
spin_lock, spin_lock_irq, spin_lock_bh  (0) 2012.06.28
mysql_ping 15분 hang 해결방안  (0) 2012.06.28
ssh 접속시 증명서 변경됐다고 나올 때  (0) 2012.05.31
ubuntu 기본 설정  (0) 2012.05.30

+ Recent posts